[데이터엔지니어링] Hadoop Yarn에 대해서 알아보자 - (4편)

Yarn의 등장

Hadoop 1.x에서는 클러스터의 자원 관리(Resource Management)와 애플리케이션의 라이프사이클 관리를 Apache Hadoop의 JobTracker가 단일 컴포넌트로 담당했습니다.
클러스터의 자원관리와 어플리케이션의 라이프사이클 관리를 Job Tracker가 모두 담당하여 병목현상이 발생하게 되었고, 이러한 병목현상을 개선하기 위해 Hadoop 2.0부터는 자원 관리와 어플리케이션의 실행을 분리할 수 있도록 YARN을 도입했습니다.

Yarn의 구조

Yarn은 cpu, Memory와 같은Computing Resource를 관리하고 할당해주는 소프트웨어입니다.

또한 Yarn은 HDFS와 완전히 독립적인 역할을 합니다.
HDFS는 Storage에 대한 기능을 제공하고,Yarn은 어플리케이션 실행 및 리소스 관리 기능을 제공합니다,

Yarn Architecture

(1) Resource Manager

Yarn Cluter 전체를 관리하는 Master 서버의 역할로 각 Node Manager의 리소스 상태를 관리합니다.

아래에서 간단히 설명하겠지만, Resource Manager는 Scheduler를 통해서 리소스 할당을 결정하는 중요한 역할을 합니다.
Resource Manager는 Scheduler와 Application Manager로 구성되어 있습니다.

- Scheduler : 다양한 Application에 리소스 할당을 어떻게 할지 결정.
- Application Manager : 사용자가 제출한 Application 전체 lifecycle 관리. 

(2) Application Master

https://westlife0615.tistory.com/735

Yarn Client에 의해서 요청된 Application을 생성하고 관리하는 역할을 수행합니다.
실행할 Application마다 Application Master가 독립적으로 생성되고, Application Master는 하나의 어플리케이션만을 관리합니다.

예를 들어, Yarn에 A라는 Job이 제출되면 가장 먼저 Application Master를 생성하고, 생성된 Application Master는 A Job의 실행과 관리를 책임지게 됩니다. Application Master는 A라는 Job의 실행을 위해 Resource Manager와 통신하며 필요한 리소스를 요청합니다.

(3) Node Manager

Node Manager는 각 Node들의 리소스(CPU, Memory)를 관리하고, 컨테이너 실행 및 상태 관리 담당합니다.

Application Master의 요청과 Resource Manager의 할당 결과를 기반으로 컨테이너를 실행하며, 실행 중인 컨테이너의 상태와 리소스 사용량을 모니터링합니다. 또한, 노드의 리소스 상태와 컨테이너 실행 정보를 Resource Manager에 주기적으로(heartbeat) 보고합니다.

Yarn의 Workflow

1) 클라이언트가 어플리케이션 실행을 요청 -> Resource Manager에서 새로운 Application ID를 발급.

2) Resource Manager에서 Application Master를 실행할 Node Manager를 선택. 

3) 선택된 Node Manager는 Container를 생성하고 Application Master를 실행

4) Application Master는 리소스 매니저에게 어플리케이션 실행을 위한 리소스를 요청하면, Resource Manager는 리소스 상태를 확인한 후 Application Master에게 Node Manager 목록을 전달

5) Application Master는 할당받은 Node Manager들에게 컨테이너 실행을 요청.

6) Node Manager들은 Container를 실행하고, 해당 컨테이너에서 실제 작업을 실행.