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, 캐퍼시티 스케줄러

반응형