SW Engineering/Hadoop

YARN 스케줄러 – Capacity 스케줄러

SungWookKang 2020. 1. 10. 01:06
반응형

YARN 스케줄러 – Capacity 스케줄러

 

·       Version : Hadoop 3.0.0-cdh6.3.2

 

리소스 매니저는 클러스터 자원을 관리하고 애플리케이션 마스터의 요청을 받아서 자원을 할당한다. 자원 할당 정책을 스케줄러라고 하며, Hadoop 2의 기본 스케줄러는 Capacity 스케줄러 이다. Capacity 스케줄러는 트리 형태로 큐를 선언하고, 각 큐 별로 이용할 수 있는 자원의 용량을 할당하여 사용할 수 있다. 예를들어 100GB의 클러스터 메모리 환경에서  A, B 두개의 큐에 각 40%, 60%의 용량(capacity)를 설정하면 A큐는 40G, B큐는 60G의 메모리를 사용할 수 있다.

 

 

그림 출처 : https://www.oreilly.com/library/view/hadoop-the-definitive/9781491901687/ch04.html

 

아래표는 캐퍼시티 스케줄러의 주요 설정 항목 및 설명이다. 설정 파일은 capacity-scheduler.xml이다.

설정 항목

설명

yarn.scheduler.capacity.maximum-applications

PRE, RUNNIG 상태로 설정 될 수 있는 최대 애플리케이션의 수

yarn.scheduler.capacity.maximum-am-resource-percent

애플리케이션 마스터(AM)에 할당 가능한 최대 비율. AM은 워커를 관리하는 역활을 하기 때문에 워커에 많은 컨테이너를 할당하기 위해서는  이 값을 적당히 조절해야 함

yarn.scheduler.capacity.root.queues

Root 큐의 이름. root큐는 하위에 동록할 큐를 위해 논리적으로만 존재

yarn.scheduler.capacity.root.[큐이름].maximum-am-resource-percent

큐에서 AM이 사용할 수 있는 자원의 비율

yarn.scheduler.capacity.root.[큐이름].capacity

큐의 용량 비율

yarn.scheduler.capacity.root.[큐이름].user-limit-factor

큐에 설정된 용량 * limit-factor 만큼 다른 큐의 용량을 사용할 수 있음. maxmimum-capacity 이상으로는 이용할 수 없음.

yarn.scheduler.capacity.root.[큐이름].maximum-capacity

큐가 최대로 사용할 수 있는 용량

 

설정된 큐의 목록과 현재 사용중인 용량을 확인하는 명령어는 아래와 같다.

mapred queue -list

 

 

 

운영중 스커줄러를 변경할 때에는 capacity-scheduler.xml 파일을 수정하고 아래 명령을 사용하여 설정을 변경할 수 있다. capacity, user-limit-factor, maximum-capacity 수정, root의 신규 큐 추가는 가능하지만, 큐의 삭제, 하위 큐 추가는 오류가 발생하기 때문에 리소스 매니저를 리스타트 해야 한다.

yarn rmadmin -refreshQueues

 

스케줄러 설정시 애플리케이션 마스터에 할당되는 비율을 너무 높게 설정하면 컨테이너를 생성할 자원이 부족하기 때문에 작업의 종류에 따라 적정한 비율을 찾는것이 중요하다.

 

 

2020-01-09 / Sungwook Kang / http://sungwookkang.com

 

Hadoop, YARN, 얀 스케줄러, YARN Capacity, 얀 캐퍼시티 스케줄러

반응형