ResourceManager, NodeManager, ApplicationMaster, Container
by Jaesang Lim
1. ResourceManager
- Application의 요구와 스케줄링의 우선순위, 자원의 가용성에 따라 ResourceManager가 특정 노드에서 실행되는 Application에 Resource Container를 동적으로 할당하는 역할
- 모든 클러스터의 자원을 중재함
- 노드의 자원을 관리하고 AM으로부터 컨테이너 요청을 받음
- 자원에 대한 교섭을 진행하고 NM과 함께 컨테이너의 시작, 모니터링, 중지를 담당
1.1 Scheduler
- NodeManager들의 자원 상태를 관리하며 부족한 Resource를 배정
-
프로그램의 상태를 검사하거나 모니터링 하지 않고, 순순히 스케쥴링만 수행
- 자원 상태에 따라서 태스크들의 실행 여부를 허가하는 역할
- 즉, 프로그램 오류나 하드웨어의 오류로 문제가 발생하더라도 재 시작시켜주지 않고 프로그램에서 요구하는 리소스 ( CPU,Memory )에 관련된 기능만 처리
1.2 ApplicationManager
- nodeManager에서 특정 작업을 위해 ApplicationMaster를 실행하고, ApplicationMaster의 상태 관리
1.3 ResourceTracker
- Container가 아직 살아 있는지 확인하기 위해 ApplicationMaster의 재 시도 횟수,
- nodeManager가 죽은 것으로 간주 할 때까지 얼마나 기다려야하는지 등의 설정 정보 확인
2. NodeManger
- Container의 Lifecycle 관리 감독
- RM을 최신 상태로 유지하며, 노드의 상태를 추적함
- JAR, Library 등의 로컬파일시스템의 분산 캐시를 관리
- Container가 생성한 로그를 관리
3. ApplicationMaster
- 사용자 Job의 Lifecycle을 관리함
- 하나의 Application의 마스터 역할
- 스케줄러의 자원 요청을 교섭
- RM의 Scheduler로 부터 적절한 Container 할당 받고 application의 실행 상태를 모니터링하고 관리
- 주기적으로 ResourceManager 상태 보고
- 스케줄러의 자원 요청을 교섭 및 NM과 협력해 컨테이너를 시작, 종료
- 프레임워크 라이브러리 인스턴스 Application별 스케줄링과 모니터
- ResourceManager로부터 자원의 교섭을 책임지고, Container를 실행하고 모니터링하는 nodeManager와 함께 작동
4. Container
- CPU, Memory, Disk 같은 자원의 논리적 집합
- 모든 Job은 여러 개의 태스크로 세분화되며, 각 태스크는 하나의 Container안에서 실행
- 필요한 자원( resourceRequest)은 ApplicationMaster가 담당하고, 승인 여부는 ResourceManager가 담당
Application 실행 과정
- Client는 ApplicationMaster 자체를 실행하는 필요한 데이터를 포함한 Application 제출
- ResourceManager는 Container할당을 책임지는 ApplicationMaster 실행
- ApplicationMaster가 ResourceManager에 등록되고, Client가 ResourceManager와 통신 가능
- ApplicationMaster는 resourceRequest를 통해 적절한 resource의 Container 요청
- Container 성공적으로 할당되면, ApplicationMaster는 Container 실행 스펙을 NodeManager에게 제공하여 Container 실행.
- 실행 스펙은 Container가 ApplicationMaster 그 자체와 통신하기위한 정보 포함
- Application 코드는 Container에서 실행되고 진행률, 상태 등의 정보를 ApplicationMaster에게 제공
- Application 실행 중 client는 상태, 진행률을 얻기위해 ApplicationMaster와 직접 통신
- Application이 완료되고, 모든 필요한 작업이 종료되면, ApplicationMaster는 ResourceManager로의 등록을 해제하고 자신의 Container를 다른 용도로 사용할 수 있게 종료
Subscribe via RSS