Amazon EMR 아키텍처 및 서비스 계층
Amazon EMR 서비스 아키텍처는 각각 특정 기능을 클러스터에 제공하는 여러 개의 계층으로 구성됩니다. 이 단원에서는 계층과 각 계층의 구성 요소에 대한 개요를 제공합니다.
스토리지
스토리지 계층에는 클러스터와 함께 사용되는 다양한 파일 시스템이 포함됩니다. 다음과 같은 다양한 유형의 스토리지 옵션이 있습니다.
Hadoop 분산 파일 시스템(HDFS)
하둡 분산 파일 시스템(HDFS)은 확장 가능한 하둡용 분산 파일 시스템입니다. HDFS는 저장하는 데이터를 클러스터의 인스턴스 전체에 분산하고 여러 개의 데이터 사본을 다른 인스턴스에 저장하여 개별 인스턴스에 장애가 발생할 경우 데이터가 손실되지 않도록 보장합니다. HDFS는 클러스터가 종료될 때 회수되는 휘발성 스토리지입니다. HDFS는 MapReduce 처리 중 중간 결과를 캐시에 저장하려는 경우나 상당한 임의 I/O가 있는 워크로드에 유용합니다.
자세한 내용은 이 안내서에서 Amazon EMR에서 인스턴스 스토리지 옵션 및 동작 섹션을 참조하거나 Apache Hadoop 웹 사이트에서 HDFS 사용 설명서
EMR 파일 시스템(EMRFS)
EMR 파일 시스템(EMRFS) 사용을 통해 Amazon EMR은 HDFS 파일 시스템과 같은 방식으로 Amazon S3에 저장된 데이터에 직접 액세스할 수 있는 기능을 추가하도록 Hadoop을 확장합니다. HDFS 또는 Amazon S3를 클러스터의 파일 시스템으로 사용할 수 있습니다. 대부분은 Amazon S3를 사용하여 입력 및 출력 데이터를 저장하고 중간 결과는 HDFS에 저장됩니다.
로컬 파일 시스템
로컬 파일 시스템은 로컬로 연결된 디스크를 참조합니다. Hadoop 클러스터를 생성할 때 인스턴스 스토어라는 미리 연결된 디스크 스토리지의 사전 구성된 블록과 함께 제공되는 Amazon EC2 인스턴스에서 각 노드가 생성됩니다. 인스턴스 스토어 볼륨의 데이터는 Amazon EC2 인스턴스의 수명 주기 동안에만 유지됩니다.
클러스터 리소스 관리
리소스 관리 계층은 클러스터 리소스 관리와 데이터 처리 작업의 일정 계획을 담당합니다.
기본적으로 Amazon EMR은 Apache Hadoop 2.0에 도입된 구성 요소인 YARN(Yet Another Resource Negotiator)을 사용하여 여러 데이터 처리 프레임워크에 대한 클러스터 리소스를 중앙에서 관리합니다. 하지만 YARN을 리소스 관리자로 사용하지 않으며, Amazon EMR에서 제공되는 다른 프레임워크와 애플리케이션도 있습니다. 또한 Amazon EMR에는 각 노드에 YARN 구성 요소를 관리하고, 클러스터를 정상 상태로 유지하며, Amazon EMR과 통신하는 에이전트가 있습니다.
태스크 노드를 실행하는 데 종종 스팟 인스턴스가 사용되기 때문에, Amazon EMR은 YARN 작업을 예약하는 기본 기능을 제공하며 이를 통해 스팟 인스턴스에서 실행 중인 태스크 노드가 종료되어도 실행 중이던 작업이 실패하지 않습니다. Amazon EMR은 애플리케이션 마스터 프로세스가 코어 노드에서만 실행되게 함으로써 이를 지원합니다. 애플리케이션 마스터 프로세스는 실행 중인 작업을 제어하며, 작업 수명 동안 유지되어야 합니다.
Amazon EMR 릴리스 5.19.0 이상에서는 기본 제공되는 YARN 노드 레이블yarn-site
및 capacity-scheduler
구성 분류의 속성은 기본적으로 구성되어 있으므로 YARN capacity-scheduler 및 fair-scheduler에서 노드 레이블을 활용할 수 있습니다. Amazon EMR은 자동으로 코어 노드에 CORE
레이블을 지정하고, CORE 레이블이 있는 노드에서만 애플리케이션 마스터가 예약되도록 속성을 설정합니다. yarn-site 및 capacity-scheduler 구성 분류에서 해당 속성을 수동으로 수정하거나, 연결된 XML 파일에서 직접 수정하면 이 기능이 작동하지 않거나 변경됩니다.
데이터 처리 프레임워크
데이터 처리 프레임워크 계층은 데이터를 처리하고 분석하는 데 사용되는 엔진입니다. YARN에서 실행되거나 고유의 리소스 관리 기능을 갖춘 여러 프레임워크를 사용할 수 있습니다. 배치, 대화형, 인 메모리, 스트리밍 등과 같은 다양한 종류의 처리 필요에 맞게 다른 프레임워크를 사용할 수 있습니다. 선택하는 프레임워크는 각 사용 사례에 다릅니다. 이 선택은 처리할 데이터와 상호 작용하는 데 사용되는 계층인 애플리케이션 계층에서 사용 가능한 언어와 인터페이스에 영향을 미칩니다. Amazon EMR에 사용 가능한 기본 처리 프레임워크는 Hadoop MapReduce와 Spark입니다.
Hadoop MapReduce
하둡 MapReduce는 분산 컴퓨팅을 위한 오픈 소스 프로그래밍 모델입니다. 이 모델은 사용자가 Map 및 Reduce 함수를 제공하는 동안 모든 로직을 처리하여 병렬 분산 애플리케이션 쓰기 프로세스를 간소화합니다. Map 함수는 데이터를 중간 결과라고 하는 키/값 페어 세트에 매핑합니다. Reduce 함수는 중간 결과를 조합하고, 추가 알고리즘을 적용해 최종 결과를 산출합니다. Map 및 Reduce 프로그램을 자동으로 생성하는 Hive를 포함한 여러 프레임워크를 MapReduce에 사용할 수 있습니다.
자세한 내용은 Apache Hadoop Wiki 웹 사이트에서 How map and reduce operations are actually carried out
Apache Spark
Spark는 빅 데이터 워크로드를 처리하기 위한 클러스터 프레임워크 및 프로그래밍 모델입니다. 하둡 MapReduce와 마찬가지로, Spark는 오픈 소스 분산 처리 시스템이지만 비순환 방향 그래프를 실행 계획에 사용하며 인 메모리 캐시를 데이터 세트에 활용합니다. Amazon EMR에서 Spark를 실행하면 EMRFS를 사용하여 Amazon S3의 데이터에 직접 액세스할 수 있습니다. Spark는 SparkSQL과 같은 여러 대화형 쿼리 모델을 지원합니다.
자세한 내용은 Amazon EMR 릴리스 안내서에서 Amazon EMR 클러스터에서 Apache Spark를 참조하세요.
애플리케이션 및 프로그램
Amazon EMR은 Hive, Pig 및 Spark Streaming 라이브러리와 같은 수많은 애플리케이션을 지원하여 더 높은 수준의 언어를 사용한 처리 워크로드 생성, 기계 학습 알고리즘 활용, 스트리밍 처리 애플리케이션 작성, 데이터 웨어하우스 구축 등의 기능을 제공합니다. 또한 Amazon EMR은 YARN을 사용하는 대신 고유의 클러스터 관리 기능을 갖춘 오픈 소스 프로젝트도 지원합니다.
다양한 라이브러리와 언어를 사용하여 Amazon EMR에서 실행되는 애플리케이션과 상호 작용합니다. 예를 들어 Java, Hive 또는 Pig를 MapReduce와 함께 사용하거나 Spark Streaming, Spark SQL, MLlib 및 GraphX를 Spark와 함께 사용할 수 있습니다.
자세한 내용은 Amazon EMR 릴리스 안내서를 참조하세요.