Capacity Scheduler 에서 한 사용자가 쓸 수 있는 자원은 두 값이 정한다.
| 설정 | 의미 |
|---|---|
minimum-user-limit-percent |
사용자가 여럿일 때 각자에게 보장되는 큐 용량의 최소 비율 |
user-limit-factor |
사용자 한 명이 큐 용량의 몇 배까지 쓸 수 있는지 |
minimum-user-limit-percent=20 은 "동시에 활성인 사용자가 5명을 넘으면 각자 최소 20% 를 보장한다"는 뜻이다. 사용자가 2명이면 각자 최대 50% 까지 쓸 수 있고, 5명이 넘으면 20% 로 수렴한다.
user-limit-factor 는 큐 용량의 배수다. 0.8 이면 한 사용자가 큐 용량의 80% 를 넘겨 쓸 수 없다. 1 이면 큐 용량만큼, 2 면 큐 용량의 두 배까지(다른 큐에 여유가 있고 탄력 사용이 허용될 때) 쓸 수 있다. 두 값을 더하는 계산은 성립하지 않는다.
<property>
<name>yarn.scheduler.capacity.root.batch.minimum-user-limit-percent</name>
<value>20</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.batch.user-limit-factor</name>
<value>0.8</value>
</property>
위 두 값은 자원 비율을 제한할 뿐, 동시 실행 잡 수를 직접 정하지 않는다. 작은 잡이라면 한도 안에서 여러 개가 함께 돌고, 큰 잡이면 하나로도 한도를 채운다.
개수 자체를 제한하려면 별도 설정을 쓴다.
| 설정 | 의미 |
|---|---|
yarn.scheduler.capacity.<queue>.maximum-applications |
큐에 동시에 존재할 수 있는 애플리케이션 수(실행 + 대기) |
yarn.scheduler.capacity.<queue>.max-parallel-apps |
큐에서 동시에 실행되는 애플리케이션 수 |
yarn.scheduler.capacity.user.max-parallel-apps |
사용자당 동시 실행 수 |
max-parallel-apps 계열은 비교적 최근 Hadoop 버전에서 추가됐으므로, 쓰기 전에 배포판에서 지원하는지 확인한다.
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.1</value>
</property>
큐 용량 중 ApplicationMaster 가 차지할 수 있는 최대 비율이다. 기본 10% 이며, AM 이 자원을 다 먹어 정작 작업 컨테이너가 뜨지 못하는 상황을 막는다.
작은 잡이 대량으로 몰리는 큐에서는 이 값이 병목이 된다. 제출은 되는데 모두 ACCEPTED 상태로 멈춰 있다면 AM 자원 한도에 걸렸을 가능성이 높다. 이때는 값을 0.2~0.3 으로 올리거나, 잡을 묶어 개수를 줄인다.
yarn queue -status batch
yarn application -list -appStates RUNNING,ACCEPTED
ResourceManager UI 의 Scheduler 화면에서 큐별 사용률과 사용자별 사용량을 함께 보는 것이 가장 빠르다.