HADOOP 이야기

하둡 얀(YARN)

소소한데이터엔지니어 2021. 4. 14. 13:59

얀은 하둡 V1 의 라이프 사이클 관리와 클러스터 리소스 관리를 모두 잡트레커에서 처리 하면서 생기는 병목 현상을 없애기 위해 하둡 V2 에서 생성된 아키텍처입니다. 얀(YARN)에서는 자원관리는 리소스메니저와 노드매니저가 애플리케이션 라이프사이클 관리 기능은 애플리케이션마스터 와 컨테이너가 담당합니다.

 

자원관리

노드매니저는 클러스터의 각 노드마다 실행되며, 현재 노드의 자원 상태를 관리하고, 리소스매니저에 현재 자원 상태를 보고합니다.

리소스 매니저는 노드매니저로 부터 받은 정보를 이용하여 자원 사용 상태를 모니터링하고, 애플리케이션 마스터가 자원을 요청하면 비어 있는 자원을 할당 하며 클러스터 전체의 자원 관리를 합니다. 자원 분배는 스케줄러(Scheduler) 에 설정된 규칙에 따라 자원을 분배합니다.

 

리소스매니저 (Resource Manager):

시스템의 모든 응용 프로그램간에 리소스를 중재하는 역할

 

노드매니저 (Node Manager):

컨테이너를 담당하고 리소스 사용량 (cpu, 메모리, 디스크, 네트워크)을 모니터링하고이를 ResourceManager 에보고하는 머신 별 프레임 워크 에이전트 입니다.

 

 

라이프 사이클

애플리케이션 마스터와 컨테이너를 이용해 처리합니다. 애플리케이션 마스터는 리소스매니저에 의해서 실행됩니다. 생성된 애플리케이션 마스터는 리소스매니저에게 작업 실행을 위한 리소스 매니저를 요청하고, 할당받은 자원의 각 노드에 컨테이너를 통해 실제 작업을 실행합니다. 컨테이너는 작업이 종료되면 애플리케이션 마스터에서 알리고, 애플리케이션 마스터는 리소스매니저에 종료 되었음을 알리고 자원을 해제합니다.

 

애플리케이션 마스터(Application Master) :

ResourceManager에서 리소스를 협상하고 NodeManager와 함께 작업을 실행하고 모니터링하는 작업을 수행합니다.

 

컨테이너 (Container) :

리소스를 점유하는 하나의 단위라고 생각하면 됩니다.

 

출처 : 하둡 공식 사이트(https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html)

스케줄러 (Scheduler)

스케줄러는 용량, 대기열 등의 제약 조건에 따라 실행 중인 다양한 애플리케이션에 리소스를 할당을 위한 정책입니다.

하둡 공식 사이트에 나와있는 스케줄러는 Fair Scheduler, Capacity Schduler 입니다.

 

Capacity Scheduler 

하둡의 기본 Scheduler 방식 입니다. Capacity Scheduler는 Hadoop 애플리케이션을 여러개를 동시에 실행하는 multi-tenant 클러스터로, 실행하는 동시에 클러스터의 처리량과 활용률을 극대화하도록 설계되었습니다. 만약 2개의 큐가 있을 경우, 우선순위로 처리 되는것이 아니라, 분리된 영역을 통해 각각 처리하게 됩니다.

출처 : 빅데이터 - 하둡, 하이브로 시작하기 https://wikidocs.net/22936

 

Fair Scheduler

Fair Scheduler는 모든 앱이 시간이 지남에 따라 평균적으로 동일한 리소스 공유를 얻을 수 있도록 애플리케이션에 리소스를 할당하는 방법입니다. 기본적인 Scheduler 방식은 Fair Scheduler를 기본으로 합니다. 만약 실행중인 단일 앱이 있다면, 해당 앱은 전체 클러스터를 차지합니다. 이후, 다른 앱이 제출되면 사용 가능한 리소스가 새 앱에 할당되어 각 앱이 결국 거의 동일한 양의 리소스를 얻게 됩니다.

출처 : 빅데이터 - 하둡, 하이브로 시작하기 https://wikidocs.net/22936