Hadoop 의 자원 관리자(Yet Another Resource Negotiator)다. 클러스터의 CPU · 메모리를 컨테이너 단위로 나눠 MapReduce · Spark · Tez 같은 애플리케이션에 배분한다. 현행 Hadoop 은 3.4.3(안정 계열) · 3.5.0[1] 이다.
| 구성 요소 | 역할 |
|---|---|
| ResourceManager (RM) | 클러스터 전체의 자원을 스케줄링한다. 마스터 노드에 하나(HA 는 둘) |
| NodeManager (NM) | 각 워커 노드에서 컨테이너를 띄우고 감시한다 |
| ApplicationMaster (AM) | 애플리케이션마다 하나. RM 에 자원을 요청하고 NM 에 컨테이너 실행을 시킨다 |
| Timeline Service | 애플리케이션 이력 · 메트릭 저장 (선택) |
$HADOOP_HOME/etc/hadoop/yarn-site.xml. MapReduce 를 돌리려면 mapreduce_shuffle 보조 서비스가 필요하다[2].
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdfs02.haedongg.net</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hdfs02.haedongg.net:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hdfs02.haedongg.net:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hdfs02.haedongg.net:8050</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hdfs02.haedongg.net:8055</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
<!--org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler
- FIFO : 먼저 들어온 작업을 먼저 처리한다. 후순위 작업은 이전 작업이 끝날 때까지 대기한다.
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
- FAIR : 작업에 균등하게 자원을 할당한다.
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
- 트리 형태로 큐를 선언하고 각 큐 별로 이용할 수 있는 자원의 용량을 정하여 할당한다. -->
</property>
</configuration>
위 설정은 RM 포트를 기본값과 다르게 잡은 기록이다. yarn.resourcemanager.hostname 만 주면 나머지 주소는 기본 포트로 자동 결정된다[3].
| 항목 | 기본값 |
|---|---|
yarn.resourcemanager.address |
${yarn.resourcemanager.hostname}:8032 |
yarn.resourcemanager.scheduler.address |
${yarn.resourcemanager.hostname}:8030 |
yarn.resourcemanager.resource-tracker.address |
${yarn.resourcemanager.hostname}:8031 |
yarn.resourcemanager.admin.address |
${yarn.resourcemanager.hostname}:8033 |
yarn.resourcemanager.webapp.address |
${yarn.resourcemanager.hostname}:8088 |
yarn.resourcemanager.scheduler.class |
CapacityScheduler |
yarn.nodemanager.resource.memory-mb |
-1 (장비에서 자동 감지) |
yarn.nodemanager.resource.cpu-vcores |
-1 (자동 감지) |
yarn.scheduler.minimum-allocation-mb |
1024 |
yarn.scheduler.maximum-allocation-mb |
8192 |
yarn.nodemanager.vmem-check-enabled |
true |
yarn.scheduler.maximum-allocation-mb 기본 8GB 보다 큰 컨테이너(Spark executor 등)를 요청하면 잡이 영원히 ACCEPTED 에 머문다. 워커 메모리에 맞춰 올린다.
$HADOOP_HOME/sbin/start-yarn.sh
yarn node -list
yarn application -list
RM 웹 UI 는 http://<rm-host>:8088/ 이다.
최신 버전 3.5.0 (2026-04-02) · 안정 계열 3.4.3 (2026-02-24) — 2026-09-20 확인. https://hadoop.apache.org/releases.html ↩︎
Hadoop 3.4.3 — YARN on a Single Node — 2026-09-20 확인. https://hadoop.apache.org/docs/r3.4.3/hadoop-project-dist/hadoop-common/SingleCluster.html ↩︎
yarn-default.xml — 2026-09-20 확인. https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-common/yarn-default.xml ↩︎