❗️ 본 게시물은 패스트캠퍼스 강의 "한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online."을 기반으로 작성되었습니다.
❗️ 1️⃣ 실시간 대용량 처리, 2️⃣ 자원의 비용 효율화
cf. Container
- Separation of responsibility : Application의 로직에만 집중 가능
- Workload portability : 인프라로부터 자유로운 편. 다양한 환경.
- Application isolation : 다른 어플리케이션의 영향 없음
❗️ Yarn은 HDFS(storage)와는 독립적으로 application 구동 기능을 제공한다 ( cpu와 메모리 같은 컴퓨팅 리소스 할당 및 관리 )
1️⃣ Resource Manager , 2️⃣ Application Master, 3️⃣ Node Managers 로 구성
1️⃣ client ▸ RM : 어플리케이션 요청. Application ID 할당
2️⃣ RM ▸ NM : AM 실행 요청
3️⃣ NM ▸ AM : JVM으로 AM 실행
4️⃣ AM ▸ RM : 필요한 리소스 요청, NM 목록 반환
5️⃣ AM ▸ NM : 컨테이너 실행 요청
6️⃣ NM ▸ Container : 어플리케이션 실행
7️⃣ 어플리케이션이 종료되어 AM이 종료되면 RM이 할당했던 리소스 해제
1️⃣ client ▸ RM : 어플리케이션 요청
- Client가 application ID 발급 요청
- RM이 발급된 ID와 함께 최대 리소스 정보 전달
- Client가 AM의 실행 위한 정보 전달
- Client가 어플리케이션 상태 요청
- 정상 등록된 경우, RM이 어플리케이션의 통계 정보 전달
2️⃣ RM ▸ NM : AM 실행 요청
- 어플리케이션 등록 및 AM용 컨테이너 요청
1.5 Application Attempt ID를 큐에 등록- 스케줄 등록 결과 알림
- 컨테이너 할당 요청
- 할당 후, 시작하도록 알림
- Application Master Launcher 실행
- AM Launcer 실행하고 컨테이너 정보 설정
- 컨테이너 실행 위해 필요한 정보와 함께 AM 실행 요청 전달
- 실행 결과 반환
3️⃣ NM ▸ AM : JVM으로 AM 실행
4️⃣ AM ▸ RM : 필요한 리소스 요청, NM 목록 반환
- AM 등록 요청
- AM 등록 후, 정보 반환
- 어플리케이션 실행에 필요한 리소스 할당 요청
▸ heartbeat 용도로 "periodically(주기적으로)" 실행- 스케줄러가 처리 이후 응답 결과 반환
5️⃣ AM ▸ NM : 컨테이너 실행 요청
6️⃣ NM ▸ Container : 어플리케이션 실행
- 컨테이너 실행 요청
- 컨테이너 실행 후 응답 반환 (Metadata, Success/Fail)
- 컨테이너의 어플리케이션 상태 모니터링 ▸ "주기적으로" 실행!!
- 컨테이너 상태 반환
7️⃣ 어플리케이션이 종료되어 AM이 종료되면 RM이 할당했던 리소스 해제
- 종료 요청
- AM 해제 후 결과 반환
( 2 실행 전에 종료된다면 어플리케이션 재시도 )
❗️ Map 작업 이후 Reduce로 전송할 데이터를 파티셔닝 및 전달
▸ Map 작업 이후 맵 태스크 컨테이너의 종료로 인한 데이터 삭제 방지