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, 얀 캐퍼시티 스케줄러
'SW Engineering > Hadoop' 카테고리의 다른 글
YARN Node Labels (노드 레이블) (0) | 2020.01.16 |
---|---|
YARN 메모리 설정 (0) | 2020.01.14 |
임시 데이터 처리를 위한 매퍼 환경 설정 및 셔플 환경 설정 (0) | 2020.01.08 |
MapReduce 메모리 설정 (0) | 2020.01.07 |
Hive에서 콤마(,)로 컬럼 구분 및 쿼테이션 내부의 콤마(“, , ”) 파싱 스킵하기 (0) | 2020.01.03 |