EMR이란?
- 빅데이터 프레임워크 실행을 간소화하는 관리형 클러스터 플랫폼
클러스터 및 노드 이해
- EMR의 중심 구성 요소는 클러스터
- 클러스터 내에 있는 각 인스턴스 = 노드
노드 유형
- 마스터 노드
- 노드 간의 데이터와 작업의 배포를 조정
- 작업 상태 추적
- 클러스터 상태 모니터링
- 마스터 노드는 필수
- 마스터노드만 있는 단일 노드로 구성 가능
- 코어 노드
- HDFS 에서 작업을 실행하고 데이터를 저장하는 소프트웨어 구성 요소가 있는 노드
- 다중 노드 클러스터에는 1개 이상의 코어 노드 존재
- 작업 노드
- 작업만 실행하고 HDFS에 데이터를저장하지 않는 소프트웨어 구성 요소가 있는 노드
- 선택사항
클러스터에 작업 제출
- 클러스터 생성시 지정할 함수에서 작업의 전체 정의 제공
- 설정된 양의 데이터를 처리하고 완료되면 종료되는 클러스터에 대해 수행
- 장기 실행 클러스터 생성, Amazon EMR 콘솔, Amazon EMR API, AWS CLI를 제출
- 하나 이상의 작업을 포함할 수 있는 단계를 제출
- 단계를 추가하거나 하둡 작업을 마스터 노드에 대화형으로 제출
- 클러스터에서 허용되는 최대 보류 단계 및 실행 단계 수는 256 , 클러스터에서 실행 중인 256개의 활성 단계가 있더라도 작업을 마스터 노드에 대화형으로 제출 가능
- 장기 실행 클러스터의 수명 기간 동안 제출할 수 있는 단계 수는 무제한.
- 한 번에 Running or Pending( 트랜잭션이 미완료된 상태) 단계는 256개만 제출 가능
- 클러스터 생성, SSH를 사용해 마스터 노드와 기타노드에 연결하고, 작업을 수행하고 스크립트 방식이나 대화형으로 쿼리 제출
데이터 처리
- 클러스터 설치시 데이터 처리 필요를 위해 설치할 프레임워크와 애플리케이션 선택
- 애플리케이션에 작업 or 쿼리를 직접 제출하는 방법을 통해 처리 가능
애플리케이션에 직접 작업 제출
- EMR 클러스터에 설치된 소프트웨어에 직접 작업을 제출하고 상호작용 가능
- 보안 연결을 통해 마스터 노드에 연결, 클러스터와 연결되어 있는 소프트웨어에 사용할 수 있는 인터페이스 도구에 액세스 필요
데이터 처리 단계 실행
- EMR 클러스터에 하나 이상의 순서가 지정된 단계 제출
- 각 단계는 클러스터에 설치된 소프트웨어에서 처리할 데이터를 조작하기 위한 지침이 포함된 작업 단위
- 예제 프로세스
- 처리를 위해 입력 데이터 세트 제출
- Pig 프로그램을 사용하여 첫 번째 단계의 출력 처리.
- Hive 프로그램을 사용하여 두 번째 입력 데이터 세트를 처리합니다.
- 출력 데이터 세트를 씁니다.
- 일반적으로 입력은 AmazonS3 or HDFS 등의 선택한 기본 파일 시스템에 파일로 저장된 데이터
- 최종 단계는 AmazonS3 버킷과 같은 지정된 위치에 출력 데이터를 씀
- 프로세스가 시작이 된다면 기본적으로 모든 작업은 pending 상태 유지
- 첫번째 단계가 시작된다면 running 상태로 변경되고 나머지 작업들은 pending 유지
- running이었던 첫번째 단계의 작업이 끝나면 completed로 바뀐 후, 두번째 작업이 running으로 실행
- 아래와 같은단계를 거쳐서 프로세스 마침

- 위와 똑같은 처리 고정에서 실패시 상태는 Failed로 변경. 이후 각 단계별로 상황을 결정할 수 있음
- 시퀀스에 남아있는 모든 단계는 cancelled로 설정되고 ( 이전 단계가 실패하면 실행하지 않음 )
- 오류를 무시하고 남은 단계를 진행하도록 선택하거나
- 해당 클러스터가 즉시 종료하도록 선택 가능

클러스터 수명 주기 이해
- STARTING
- 클러스터에서 EC2 인스턴스를 프로비저닝
- BOOTSTRAPPING
- 부트스트랩 작업 (클러스터 생성시 지정한 기본 애플리케이션 설치)
- 예) Hadoop, Hive, Spark 등
- RUNNING
- 부트스트랩 작업이 성공적으로 완료, 기본 애플리케이션이 설치 된 후의 상태
- 클러스터 인스턴스에 연결 가능
- 해당 클러스터는 사용자가 클러스터 생성시 지정했던 단계를 순차적으로 진행
- 실행 후 추가 단계를 제출하여 모든 이전 단계가 완료된 후 실행되도록 할 수도 있음
- WAITTING
- 위의 단계를 순차적으로 실행한 경우의 클러스터의 상태
- TERMINATING
- 단계를 완료한 후 자동 종료하도록 클러스터를 구성한 경우의 상태
- TERMINATED
- TERMINATING 이후의 상태
- 클러스터가 대기하도록 구성된 경우 더 이상 필요하지 않을 때 수동으로 클러스터 종료해야함
- 종료방지 기능이 활성화 되어있지 않으면 클러스터 수명 주기 중 오류로 인해 클러스터 및 모든 인스턴스 종료
- 클러스터에 저장된 데이터가 삭제되고 , 클러스터 상태는 TERMINATED_WITH_ERRORS
- 종료방지 기능이 활성화 된 경우, 클러스터로부터 데이터를 가져온 다음 종료 방지 기능을 비활성화하고 클러스터 종료 가능

용어
- 퍼블릭 서브넷
- 외부에서 직접 IP를 찍어서 들어올 수 있는 서브넷
- 외부에서 Elasitc IP나 IPv6 주소로 직접 접근 가능
- 프라이빗 서브넷
- 다른 자원(Load balancer, Proxy 등) 을 통하지 않으면 들어올 수 없는 서브넷
- VPC 내 프라이빗 서브넷만 생성하면 완전히 단절된 네트워크 만들 수 있음
- bootstrap
- EMR 클러스터를 띄울 때 실행하는 작업 ( python 패키지 설치, 포트, driver jar 다운로드 등 )
참고
written by salmonavocado🥑
Share article