본문 바로가기

빅데이터/Hadoop

Yarn 동작 원리 & Scheduler

ResourceManager

Client가 JOB을 제출하면 ResourceManager가 클러스터들의 자원들을 관리하며, 어디에 자원을 할당할지 결정하게 됩니다. 크게 Scheduler와 AM으로 구성되어 있습니다. AM은 job제출 수락하고, ApplicationID 생성하며, Application Master를 생성합니다. 그 후  Application Master는 리소스 할당 위해 Scheduler에게 요청하여, Scheduler는 Node Manager한테 보고받은 사항 바탕으로 컨테이너 할당합니다. 참고로 워커 노드에서 컨테이너 생성은 NodeManager가 합니다.  

 

Application Master

단일 작업은 하나의 Application Master를 갖으며, Node Manager와 함께 task 실행시키고 모니터링 하며 Resource Manager와 자원을 할당, 추적, 모니터링. 주기적으로 ResourceManager에게 heartbeat보냅니다. 실행 완료되면 ResourceManager에게 완료 상태 보내고, 만약 문제 발생하며 ResourceManager가 다른 노드에서 실행시키게 합니다.

 

Node Manager

노드의 cpu, 메모리, 네트워크 상태 정보 등 리소스 정보를 ResourceManager에게 상태 보고합니다. 문제 시, ResourceManager가 container kill 요청합니다. 또한 워커 노드에 컨테니어 생성역할을 합니다.

 

Container

CPU, Disk, Memory 등의 리소스로 구성되어있습니다.  모든 작업은 결국 여러개의 태스크로 세분화되고, 각 테스크는 하나의 Container에서 실행됩니다.

 

Scheduler

ResourceManager은 Scheduler와 ApplicationsManager 으로 구성되어있습니다. Scheduler는 크게 3가지, FIFO / Capacity / Fair 종류가 있습니다.

 

 

FIFO Scheduler

Queue 처럼 동작하면서 어플리케이션이 들어온대로 순차적으로 실행됩니다. 설정이 간편하지만, 비효율적입니다.

 

Capacity Scheduler

여러 개의 queue를 사용하고 있고, 사용자별 혹은 컴포넌트(Hive, Spark, MR 등) 별로 queue를 할당 할 수 있습니다. 

미리 자원을 예약해두기 때문에, 작업이 큰 건 queue A, 작은 건 queue B에 할당할 수 있습니다. 내부적으로는 FIFO로 작동합니다. 단점은, 자원을 사전에 정의해둔 상태이기 때문에 전체 클러스터의 효율성은 떨어집니다. 하지만 최근에는 preemt 기능을 제공해서 효율적으로 사용할 수 있습니다. 

 

Fair Scheduler

똑같은 Queue로 나누지만 weight에 따라 어느만큼 자원을 queue별로 분배할지 정할 수 있습니다. 내부적으로는 FIFO가 아닌 Fair방식으로 즉, 모든 어플리케이션을 동적으로 자원을 분배시켜줍니다. 1번 작업 중 2번 작업이 오면 1번이 사용하는 자원을 2번에 맞게 자원을 할당해주게 됩니다. 단점은, 작은 어플리케이션에게 작업 나눠주기 위해 자원을 해제하고 분배하기 까지 시간이 걸립니다.

 

Reference

https://mangkyu.tistory.com/127

 

[Hadoop] YARN의 구조와 동작 방식

1. Hadoop 1.0의 구조와 YARN의 등장 이유 [ Hadoop 1.0의 구조와 YARN의 등장 ] Hadoop 1.0의 MRV1(MapReduce Version1)는 작업의 처리와 자원의 관리를 한번에 관리하였다. 즉, Single-Master 노드에 해당하는..

mangkyu.tistory.com

https://opentutorials.org/module/2926/17248

 

YARN(Yet Another Resource Nagotiator) - 하둡에 대하여~

YARN(Yet Another Resource Nagotiator)란? 하둡 2.0부터 제공되는 리소스 관리 플랫폼. 각 어플리케이션(HBase, Accumulo, Storm, MapReduce...)에 필요한 리소스(CPU, 메모리, 디스크 등)를 할당하고 모니터링하는 업무

opentutorials.org

https://blog.geunho.dev/posts/hadoop-yarn/

'빅데이터 > Hadoop' 카테고리의 다른 글

Block Count / Small files 해결  (0) 2022.09.24
MapReduce 원리  (0) 2022.09.22
Hadoop HA 아키텍처  (1) 2022.09.21
하둡 아키텍처 참고 글  (0) 2022.09.09
[Hadoop/Impala] File Descriptor & Data block count 문제  (0) 2022.08.12