YARN의 이해
YARN 아키텍쳐
YARN은 4개의 컴포넌트(Resource Manager, Node Manager, Application Master, Container)로 이루어져 있다.
- Resource Manager - 리소스 매니져는 전체 클러스터에서 사용가능한 자원을 관리하고, 얀 클러스터에서 수행되는 어플리케이션이 자원을 요청했을 경우 이를 할당해준다.
- Node Manager - 하둡1의 TaskTracker와 같은 기능을 수행한다. 하지만 Task Tracker가 Child Process를 실행시켰던 것과 달리, 컨테이너라는 컴포넌트를 실행시키고, 컨테이너의 라이프사이클을 관리한다.
- Container - Task의 실행 단위이다. 하나의 Container는 리소스 매니저가 할당한 시스템 자원을 활용할 수 있다.
- Application Master - Job의 실행단위이다. Application Master는 하나의 Job을 수행하고, Job을 이루는 Task들은 다시 Application Master가 Node Manager에게 요청하여 Container 단위로 수행한다.
YARN 작업 흐름
- 얀 API를 구현한 어플리케이션 실행을 Resource Manager에게 요청한다. 정상적인 실행 요청일 경우 Application ID를 할당한다.
- Resource Manager는 Node Manager에게 어플리케이션 실행을 요청한다. Node Manager는 새로운 컨테이너(Application Master)를 실행한다.
- Application Master는 Resource Manager에게 어플리케이션을 실행하기 위한 리소스를 요청한다. Resource Manager는 클러스터를 구성하는 각 노드를 확인하여 가용 가능한 자원이 존재하는 Node들의 Node Manager 목록을 전송한다.
- Application Master는 할당받은 Node Manager에게 컨테이너 실행을 요청한다.
- Node Manager들은 컨테이너를 생성하여 Application의 Task를 실행한다. 어플리케이션이 종료되면 Application Master가 종료되고 Resource Manager는 Application Master가 할당받았던 자원을 회수한다.