SlideShare a Scribd company logo
1 of 61
YARN OVERVIEW 
BDS 연구소 플랫폼개발팀 
정성현 주임 
gopass2002@gmail.com 
2014-04-18 
1
목차 
1. Apache Hadoop YARN 
2. YARN Daemons 
3. Why is YARN needed? 
4. Scheduling 
5. Fault Tolerance 
6. Q & A 
2
APACHE HADOOP YARN 
3
HADOOP 1 vs. 2 YARN 
4
Apache Hadoop YARN 
(Yet Another Resource Negotiator) 
• YARN의 구성 
• 리소스 메니저(Resource Manager) 
• 어플리케이션 매니저(Applications Manager) 
• 스케줄러(Scheduler) 
• 어플리케이션 마스터(Application Master) 
• 노드 매니저(Node Manager) 
• 컨테이너(Container) 
• hadoop-0.23.0에서 소개 (2011년 11월 11일 발표) 
• 현재 최신버전 hadoop-2.4.0 (2014년 04월 07일 발표) 
5
YARN DAEMONS 
6
YARN Daemons 
Resource Manager(RM) 
• master node에서 동작 
• global resource scheduler 
• application들의 자원 요구의 
할당 및 관리 
7 
Node Manager(NM) 
• slave node에서 동작 
• node의 자원을 관리 
• container에 node의 자원을 
할당
YARN Daemons 
Containers 
• RM의 요청에 의해 NM에서 할당 
• slave node의 CPU core, 
memory의 자원을 할당 
• applications은 다수의 container로 
동작 
8 
Application Master(AM) 
• application당 한 개씩 존재 
• application의 spec을 정의 
• container에서 동작 
• application task를 위해 container 
할당을 RM에게 요청
WHY IS YARN NEEDED? 
9
Why is YARN needed? 
• Cluster의 확장성 
• HADOOP 1 
• 클러스터의 규모와는 상관없이 Job Tracker의 개수는 1개 (병목 지점) 
• 예를 들어 4000개의 노드로 구성된 클러스터에 단 1개의 JobTracker가 모든 노드의 
job을 관리 
• HADOOP 2 YARN 
• Job Tracker의 기능을 Resource Manager와 Application Master로 분리 
• 클러스터에는 여러개의 Application이 동작 가능 
• 각 Application은 Application Master가 모든 task를 관리 
10 
Job Tracker 
Resource 
Manager 
Application 
Master 
Application 
Master 
Application 
Master
HADOOP 2 YARN 
Hadoop 1 Hadoop 2 YARN 
TaskTracker 
Task 
Computation 
JobTracker 
Job & Task 
Management 
Resource 
Scheduling 
Platform + Application 
Framework 
ResourceManager 
Resource 
Scheduling 
NodeManager 
Resource 
Monitoring & 
Enforcement 
Platform 
Application Master 
Job & Task 
Management 
Application Framework 
11
Why is YARN needed? 
• Application 호환성 
• HADOOP 1 
12 
• MapReduce외에 다른 Application은 클러스터의 자원을 공유할 수 없는 문제 
• HADOOP 2 YARN 
• 같은 클러스터내에서 M/R와 다른 application을 실행할 수 있도록 지원
Why is YARN needed? 
• 자원 할당의 유연성 
• HADOOP 1 
• Slot에 미리 자원(memory, cpu cores)를 할당 후 미리 정해진 설정에 따라서 
slot을 job에 할당 
• Job이 모두 끝나기 전까지는 자원이 반납되지 않는 문제 
• HADOOP 2 YARN 
• 요청이 있을 때마다 요구하는 자원의 spec에 맞게 자원을 container의 
개념으로 할당 
• container마다 다른 spec의 자원을 갖을 수 있음 
• 모든 task는 container에서 수행되고 task가 끝나는 즉시 자원을 반납 
13
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
MapReduce Status 
Job Submission 
Resource allocation 
14
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
15
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
16
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Map 
(ready) 
Map 
(ready) 
Task 
Tracker 
Reduce 
(ready) 
Reduce 
(ready) 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
17
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Map 
(running) 
Map 
(running) 
Task 
Tracker 
Reduce 
(ready) 
Reduce 
(ready) 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
18
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Map 
(done) 
Map 
(done) 
Task 
Tracker 
Reduce 
(running) 
Reduce 
(running) 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
19
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Map 
(done) 
Map 
(done) 
Task 
Tracker 
Reduce 
(running) 
Reduce 
(running) 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
20 
Client
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Map 
(done) 
Map 
(done) 
Task 
Tracker 
Reduce 
(running) 
Reduce 
(running) 
Client 
MapReduce Status 
Job Submission 
Resource allocation 
21 
Client 
(pending)
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
MapReduce Status 
Job Submission 
Resource allocation 
22 
Client
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
Task 
Tracker 
Slot Slot 
MapReduce Status 
Job Submission 
Resource allocation 
23 
Client
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Map 
(ready) 
Map 
(ready) 
Task 
Tracker 
Reduce 
(ready) 
Reduce 
(ready) 
Task 
Tracker 
Slot Slot 
MapReduce Status 
Job Submission 
Resource allocation 
24 
Client
HADOOP 1 
slot base resource allocate 
Job 
Tracker 
Task 
Tracker 
Map 
(running) 
Map 
(running) 
Task 
Tracker 
Reduce 
(ready) 
Reduce 
(ready) 
Task 
Tracker 
Slot Slot 
MapReduce Status 
Job Submission 
Resource allocation 
25 
Client
HADOOP 2 YARN 
container base resource allocation 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
26
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
27
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
28 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
29 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Container Container 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
30 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
31 
App 
Master 
Map 
(ready) 
Map 
(ready)
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
32 
App 
Master 
Map 
(running) 
Map 
(running)
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
33 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
34 
App 
Master 
Container 
Container
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
35 
App 
Master 
Reduce 
(ready) 
Reduce 
(ready)
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
36 
App 
Master 
Reduce 
(running) 
Reduce 
(running)
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
37 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
38 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
39 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
40 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client 
Container 
Container 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
41 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client 
Map 
(ready) 
Map 
(ready) 
App 
Master
HADOOP 2 YARN 
container base resource allocation 
Client 
Resource 
Manager 
Node 
Manager 
Node 
Manager 
Node 
MapReduce Status Manager 
Job Submission 
Resource Request 
Resource Allocation 
42 
App 
Master 
Reduce 
(running) 
Reduce 
(running) 
Client 
Map 
(ready) 
Map 
(ready) 
App 
Master
SCHEDULING 
43
FIFO Scheduler (Hadoop v 1.x) 
44 
• Hadoop 1.x의 기본 스케줄러 
• 우선순위를 부여하여 각 우선순위마다 FIFO큐를 갖을 수 있다 
• 5단계의 우선순위 존재 (very high, high, normal, low, very low) 
• 높은 우선순위의 큐부터 slot을 할당받기 때문에, 낮은 순위의 큐는 
기아현상 발생 
• 기아현상의 단점을 보완하기 위해 Fair 스케줄러 사용 
• 실험, 테스트 용도의 소형 클러스터 외에는 사용하는 것을 권장하지 
않음
Fair Scheduler (Hadoop v 1.x) 
45 
FIFO와 달리 task slot을 pool에 부여하고 사용자는 자신이 사용하는 
pool의 slot을 이용 
• Pool 
• 각 사용자가 공평하게 클러스터를 공유하기 위해 각 사용자는 
pool을 갖는다 
• 각 pool을 보장된 최소 slot 수용량을 설정 가능 
• 단일 job을 수행중일 때 클러스터의 모든 자원을 독점 
• 특정 사용자(pool)가 더 많은 job을 제출해도 한정된 task slot에 의해 더 
많은 클러스터의 자원을 할당받지 못함 
• job에서 실행중인 모든 task가 끝나면 해당 slot을 다른 pool에 할당
Fair Scheduler (Hadoop v 1.x) 
• Slot 
• 모든 slot은 동일한 cpu time을 점유 
• 같은 조건의 pool일 때 모든 pool은 동일한 slot과 cpu time을 점유 
• FIFO로 동작 
• Preemption 
• 자원을 공평하게 할당 받지 못했을 때 다른 pool의 slot을 선점 
• mapred.fairscheduler.preemption에서 설정 (기본값: false) 
46 
• 미리 설정한 preemption.timeout보다 긴 시간 동안 자원을 할당받지 
못할 때 
• 수용량 이상의 자원을 할당받은 pool의 job을 kill하고 slot을 선점 
• 선점된 slot에서 실행 중이던 job는 자원을 재 할당받아 처음부터 재실행 
• 선점되는 job은 가장 최근에 실행된 job 
• 그동안 실행된 연산의 결과가 없어지는 기회비용 최소화
47 
Capacity Scheduler (Hadoop v 2.x) 
• Hadoop 2.x YARN의 기본 스케줄러 
• yarn.resourcemanager.scheduler.class 
• org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.Capacity 
Scheduler 
• 큐의 계층화 및 capacity 설정을 위해 별도의 설정 필요 
• capacity-scheduler.xml 
• 다수의 큐로 구성하여 계층화 할 수 있다 
• 하나의 큐는 다른 큐의 자식일 수 있다 (트리구조) 
• root 큐가 존재하고 클러스터 전체 큐를 서브 큐로 갖는다 
• 각 큐는 할당된 capacity가 있어 각 사용자가 클러스터를 개별적으로 
사용하는 효과 
• hadoop 2.x에서 preemption이 사라졌으며 추가할 계획이 없음
48 
Capacity Scheduler Configuration 
• yarn.scheduler.capacity.<queue-path>.queues 
• 해당 큐의 서브 큐를 정의 ( , )로 구분 
• yarn.scheduler.capacity.<queue-path>.capacity 
• 상위 큐에서 해당 큐가 최소로 할당받을 수 있는 capacity를 정의(0~100) 
• yarn.scheduler.capacity.<queue-path>.maximum-capacity 
• 상위 큐에서 최대로 할당받을 수 있는 capacity정의(0~100) 
• yarn.scheduler.capacity.<queue-path>.state 
• 큐의 실행 상태 <STOPPED, RUNNING> 
• yarn.scheduler.capacity.<queue-path>.user-limit-factor 
• 큐의 자원이 가용한 범위내에서 단일 user가 점유할 수 있는 자원의 
한계(0~1)
49 
Capacity Scheduler Configuration 
root 
cluster node count: 10 
memory per node: 10GB 
cluster total capacity: 100GB 
yarn.nodemanager.resource.memory-mb = 10240 
capacity: 100GB
50 
Capacity Scheduler Configuration 
root 
root.queues=A, B 
capacity: 100GB 
root.A.capacity=60 root.B.capacity=40 
capacity: 60GB capacity: 40GB 
A B
51 
Capacity Scheduler Configuration 
root 
capacity: 100GB 
root.B.queues=b1, b2 
capacity: 60GB capacity: 40GB 
A B 
root.B.b1.capacity=20 root.B.b2.capacity=80 
b1 b2 
capacity: 8GB capacity: 32GB 
root.A.capacity=60
52 
Capacity Scheduler Configuration 
root 
capacity: 100GB 
available: 40GB 
used: 60% 
A B 
b1 b2 
capacity: 32GB 
available: 32GB 
used: 0% 
capacity: 8GB 
available: 8GB 
used: 0% 
capacity: 60GB 
available: 0GB 
used: 100% 
capacity: 40GB 
available: 40GB 
used: 0% 
A 큐의 모든 capacity를 소모했다고 가정
53 
Capacity Scheduler Configuration 
root 
A B 
b1 b2 
capacity: 32GB 
available: 32GB 
used: 0% 
capacity: 8GB 
available: 0GB 
used: 100% 
capacity: 60GB 
available: 0GB 
used: 100% 
capacity: 40GB 
available: 32GB 
used: 20% 
b1에 새로운 각각 4GB를 요구하는 job 두 개가 제출 
capacity: 100GB 
available: 32GB 
used: 72%
54 
Capacity Scheduler Configuration 
root 
A B 
b1 b2 
capacity: 32GB 
available: 24GB 
used: 0% 
capacity: 8GB 
available: 0GB 
used: 200% 
capacity: 60GB 
available: 0GB 
used: 100% 
capacity: 40GB 
available: 24GB 
used: 40% 
b1의 capacity를 모두 소진한 상태에서 b1에 
8GB를 요구하는 새로운 job이 제출 
capacity: 100GB 
available: 24GB 
used: 86%
55 
Capacity Scheduler Configuration 
root 
A B 
b1 b2 
capacity: 32GB 
available: 24GB 
used: 0% 
capacity: 8GB 
available: 0GB 
used: 200% 
capacity: 60GB 
available: 0GB 
used: 100% 
capacity: 40GB 
available: 24GB 
used: 40% 
b2에 32GB를 요구하는 job이 제출되었지만 
요구하는 자원이 클러스터의 가용한 자원보다 크기 때문에 
wait상태로 다른 job이 자원을 반납할 때까지 대기 
capacity: 100GB 
available: 24GB 
used: 86%
56 
Capacity Scheduler Configuration 
root 
A B 
b1 b2 
capacity: 32GB 
available: 0GB 
used: 100% 
capacity: 8GB 
available: 0GB 
used: 100% 
capacity: 60GB 
available: 0GB 
used: 100% 
capacity: 40GB 
available: 0GB 
used: 100% 
b1에서 8G의 자원을 할당받아 동작중이던 job이 종료되고 
자원을 반납하게되면 회수된 자원을 b2에서 대기중이던 job에 할당 
capacity: 100GB 
available: 0GB 
used: 100%
FAULT TOLERANCE 
57
Fault Tolerance 
• Task(Container) – 기존 방식과 동일 
58 
• MRAppMaster는 task가 멈추거나 예외가 발생하면 다시 시작하도록 
시도 
• 기본 4번: mapred.map.max.attempts, mapred.reduce.max.attempts) 
• task가 너무 많이 실패할 경우 application이 실패했다고 간주 
• 강제로 종료된 task의 경우 실패로 간주하지 않음 
• Application Master 
• AM가 heartbeat을 보내는 것을 멈추면, RM은 AM을 다시 시작하도록 
시도 
• 기본 2번: yarn.resourcmanager.am.maxretries 
• MRAppMaster의 optional setting: Job recovery 
• if false, 모든 task들이 다시 시작 
• if true, 실패한 task만을 다시 실행시켜 MRAppMaster의 task의 상태를 회복
Fault Tolerance 
• Node Manager 
59 
• NM가 heartbeat을 RM으로 보내는 것을 중단 할 경우, RM은 해당 
node를 active node에서 제외. 
• 기본 10분: yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms 
• MRAppMaster에 의해서 해당 node의 task들은 실패한 것으로 간주. 
• AppMaster가 있는 node가 실패할 경우, application의 실패로 간주. 
• Resource Manager 
• RM이 작동을 멈출 경우, 어떠한 job, task도 container에 배치 불가 
• HA(High Availability)를 지원하도록 설정 가능
Q & A 
60
감사합니다. 
61

More Related Content

What's hot

Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명Jinho Yoo
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Sanghee Lee
 
Tajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWSTajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWSGruter
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, CoordinatorKim Log
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Sang-bae Lim
 
Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architectureSteve Min
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna현철 박
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Steve Min
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계PgDay.Seoul
 
[빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원][빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원]Jayoung Lim
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기찬희 이
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기beom kyun choi
 

What's hot (20)

Druid+superset
Druid+supersetDruid+superset
Druid+superset
 
Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명
 
Apache Kylin
Apache KylinApache Kylin
Apache Kylin
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313
 
Tajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWSTajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWS
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)
 
Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
NoSQL
NoSQLNoSQL
NoSQL
 
Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
 
[빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원][빅데이터 컨퍼런스 전희원]
[빅데이터 컨퍼런스 전희원]
 
Apache sqoop
Apache sqoopApache sqoop
Apache sqoop
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기
 
HDFS Overview
HDFS OverviewHDFS Overview
HDFS Overview
 

YARN overview

  • 1. YARN OVERVIEW BDS 연구소 플랫폼개발팀 정성현 주임 gopass2002@gmail.com 2014-04-18 1
  • 2. 목차 1. Apache Hadoop YARN 2. YARN Daemons 3. Why is YARN needed? 4. Scheduling 5. Fault Tolerance 6. Q & A 2
  • 4. HADOOP 1 vs. 2 YARN 4
  • 5. Apache Hadoop YARN (Yet Another Resource Negotiator) • YARN의 구성 • 리소스 메니저(Resource Manager) • 어플리케이션 매니저(Applications Manager) • 스케줄러(Scheduler) • 어플리케이션 마스터(Application Master) • 노드 매니저(Node Manager) • 컨테이너(Container) • hadoop-0.23.0에서 소개 (2011년 11월 11일 발표) • 현재 최신버전 hadoop-2.4.0 (2014년 04월 07일 발표) 5
  • 7. YARN Daemons Resource Manager(RM) • master node에서 동작 • global resource scheduler • application들의 자원 요구의 할당 및 관리 7 Node Manager(NM) • slave node에서 동작 • node의 자원을 관리 • container에 node의 자원을 할당
  • 8. YARN Daemons Containers • RM의 요청에 의해 NM에서 할당 • slave node의 CPU core, memory의 자원을 할당 • applications은 다수의 container로 동작 8 Application Master(AM) • application당 한 개씩 존재 • application의 spec을 정의 • container에서 동작 • application task를 위해 container 할당을 RM에게 요청
  • 9. WHY IS YARN NEEDED? 9
  • 10. Why is YARN needed? • Cluster의 확장성 • HADOOP 1 • 클러스터의 규모와는 상관없이 Job Tracker의 개수는 1개 (병목 지점) • 예를 들어 4000개의 노드로 구성된 클러스터에 단 1개의 JobTracker가 모든 노드의 job을 관리 • HADOOP 2 YARN • Job Tracker의 기능을 Resource Manager와 Application Master로 분리 • 클러스터에는 여러개의 Application이 동작 가능 • 각 Application은 Application Master가 모든 task를 관리 10 Job Tracker Resource Manager Application Master Application Master Application Master
  • 11. HADOOP 2 YARN Hadoop 1 Hadoop 2 YARN TaskTracker Task Computation JobTracker Job & Task Management Resource Scheduling Platform + Application Framework ResourceManager Resource Scheduling NodeManager Resource Monitoring & Enforcement Platform Application Master Job & Task Management Application Framework 11
  • 12. Why is YARN needed? • Application 호환성 • HADOOP 1 12 • MapReduce외에 다른 Application은 클러스터의 자원을 공유할 수 없는 문제 • HADOOP 2 YARN • 같은 클러스터내에서 M/R와 다른 application을 실행할 수 있도록 지원
  • 13. Why is YARN needed? • 자원 할당의 유연성 • HADOOP 1 • Slot에 미리 자원(memory, cpu cores)를 할당 후 미리 정해진 설정에 따라서 slot을 job에 할당 • Job이 모두 끝나기 전까지는 자원이 반납되지 않는 문제 • HADOOP 2 YARN • 요청이 있을 때마다 요구하는 자원의 spec에 맞게 자원을 container의 개념으로 할당 • container마다 다른 spec의 자원을 갖을 수 있음 • 모든 task는 container에서 수행되고 task가 끝나는 즉시 자원을 반납 13
  • 14. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Slot Slot Task Tracker Slot Slot MapReduce Status Job Submission Resource allocation 14
  • 15. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Slot Slot Task Tracker Slot Slot Client MapReduce Status Job Submission Resource allocation 15
  • 16. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Slot Slot Task Tracker Slot Slot Client MapReduce Status Job Submission Resource allocation 16
  • 17. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Map (ready) Map (ready) Task Tracker Reduce (ready) Reduce (ready) Client MapReduce Status Job Submission Resource allocation 17
  • 18. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Map (running) Map (running) Task Tracker Reduce (ready) Reduce (ready) Client MapReduce Status Job Submission Resource allocation 18
  • 19. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Map (done) Map (done) Task Tracker Reduce (running) Reduce (running) Client MapReduce Status Job Submission Resource allocation 19
  • 20. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Map (done) Map (done) Task Tracker Reduce (running) Reduce (running) Client MapReduce Status Job Submission Resource allocation 20 Client
  • 21. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Map (done) Map (done) Task Tracker Reduce (running) Reduce (running) Client MapReduce Status Job Submission Resource allocation 21 Client (pending)
  • 22. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Slot Slot Task Tracker Slot Slot MapReduce Status Job Submission Resource allocation 22 Client
  • 23. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Slot Slot Task Tracker Slot Slot Task Tracker Slot Slot MapReduce Status Job Submission Resource allocation 23 Client
  • 24. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Map (ready) Map (ready) Task Tracker Reduce (ready) Reduce (ready) Task Tracker Slot Slot MapReduce Status Job Submission Resource allocation 24 Client
  • 25. HADOOP 1 slot base resource allocate Job Tracker Task Tracker Map (running) Map (running) Task Tracker Reduce (ready) Reduce (ready) Task Tracker Slot Slot MapReduce Status Job Submission Resource allocation 25 Client
  • 26. HADOOP 2 YARN container base resource allocation Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 26
  • 27. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 27
  • 28. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 28 App Master
  • 29. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 29 App Master
  • 30. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Container Container Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 30 App Master
  • 31. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 31 App Master Map (ready) Map (ready)
  • 32. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 32 App Master Map (running) Map (running)
  • 33. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 33 App Master
  • 34. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 34 App Master Container Container
  • 35. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 35 App Master Reduce (ready) Reduce (ready)
  • 36. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 36 App Master Reduce (running) Reduce (running)
  • 37. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 37 App Master Reduce (running) Reduce (running) Client
  • 38. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 38 App Master Reduce (running) Reduce (running) Client App Master
  • 39. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 39 App Master Reduce (running) Reduce (running) Client App Master
  • 40. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 40 App Master Reduce (running) Reduce (running) Client Container Container App Master
  • 41. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 41 App Master Reduce (running) Reduce (running) Client Map (ready) Map (ready) App Master
  • 42. HADOOP 2 YARN container base resource allocation Client Resource Manager Node Manager Node Manager Node MapReduce Status Manager Job Submission Resource Request Resource Allocation 42 App Master Reduce (running) Reduce (running) Client Map (ready) Map (ready) App Master
  • 44. FIFO Scheduler (Hadoop v 1.x) 44 • Hadoop 1.x의 기본 스케줄러 • 우선순위를 부여하여 각 우선순위마다 FIFO큐를 갖을 수 있다 • 5단계의 우선순위 존재 (very high, high, normal, low, very low) • 높은 우선순위의 큐부터 slot을 할당받기 때문에, 낮은 순위의 큐는 기아현상 발생 • 기아현상의 단점을 보완하기 위해 Fair 스케줄러 사용 • 실험, 테스트 용도의 소형 클러스터 외에는 사용하는 것을 권장하지 않음
  • 45. Fair Scheduler (Hadoop v 1.x) 45 FIFO와 달리 task slot을 pool에 부여하고 사용자는 자신이 사용하는 pool의 slot을 이용 • Pool • 각 사용자가 공평하게 클러스터를 공유하기 위해 각 사용자는 pool을 갖는다 • 각 pool을 보장된 최소 slot 수용량을 설정 가능 • 단일 job을 수행중일 때 클러스터의 모든 자원을 독점 • 특정 사용자(pool)가 더 많은 job을 제출해도 한정된 task slot에 의해 더 많은 클러스터의 자원을 할당받지 못함 • job에서 실행중인 모든 task가 끝나면 해당 slot을 다른 pool에 할당
  • 46. Fair Scheduler (Hadoop v 1.x) • Slot • 모든 slot은 동일한 cpu time을 점유 • 같은 조건의 pool일 때 모든 pool은 동일한 slot과 cpu time을 점유 • FIFO로 동작 • Preemption • 자원을 공평하게 할당 받지 못했을 때 다른 pool의 slot을 선점 • mapred.fairscheduler.preemption에서 설정 (기본값: false) 46 • 미리 설정한 preemption.timeout보다 긴 시간 동안 자원을 할당받지 못할 때 • 수용량 이상의 자원을 할당받은 pool의 job을 kill하고 slot을 선점 • 선점된 slot에서 실행 중이던 job는 자원을 재 할당받아 처음부터 재실행 • 선점되는 job은 가장 최근에 실행된 job • 그동안 실행된 연산의 결과가 없어지는 기회비용 최소화
  • 47. 47 Capacity Scheduler (Hadoop v 2.x) • Hadoop 2.x YARN의 기본 스케줄러 • yarn.resourcemanager.scheduler.class • org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.Capacity Scheduler • 큐의 계층화 및 capacity 설정을 위해 별도의 설정 필요 • capacity-scheduler.xml • 다수의 큐로 구성하여 계층화 할 수 있다 • 하나의 큐는 다른 큐의 자식일 수 있다 (트리구조) • root 큐가 존재하고 클러스터 전체 큐를 서브 큐로 갖는다 • 각 큐는 할당된 capacity가 있어 각 사용자가 클러스터를 개별적으로 사용하는 효과 • hadoop 2.x에서 preemption이 사라졌으며 추가할 계획이 없음
  • 48. 48 Capacity Scheduler Configuration • yarn.scheduler.capacity.<queue-path>.queues • 해당 큐의 서브 큐를 정의 ( , )로 구분 • yarn.scheduler.capacity.<queue-path>.capacity • 상위 큐에서 해당 큐가 최소로 할당받을 수 있는 capacity를 정의(0~100) • yarn.scheduler.capacity.<queue-path>.maximum-capacity • 상위 큐에서 최대로 할당받을 수 있는 capacity정의(0~100) • yarn.scheduler.capacity.<queue-path>.state • 큐의 실행 상태 <STOPPED, RUNNING> • yarn.scheduler.capacity.<queue-path>.user-limit-factor • 큐의 자원이 가용한 범위내에서 단일 user가 점유할 수 있는 자원의 한계(0~1)
  • 49. 49 Capacity Scheduler Configuration root cluster node count: 10 memory per node: 10GB cluster total capacity: 100GB yarn.nodemanager.resource.memory-mb = 10240 capacity: 100GB
  • 50. 50 Capacity Scheduler Configuration root root.queues=A, B capacity: 100GB root.A.capacity=60 root.B.capacity=40 capacity: 60GB capacity: 40GB A B
  • 51. 51 Capacity Scheduler Configuration root capacity: 100GB root.B.queues=b1, b2 capacity: 60GB capacity: 40GB A B root.B.b1.capacity=20 root.B.b2.capacity=80 b1 b2 capacity: 8GB capacity: 32GB root.A.capacity=60
  • 52. 52 Capacity Scheduler Configuration root capacity: 100GB available: 40GB used: 60% A B b1 b2 capacity: 32GB available: 32GB used: 0% capacity: 8GB available: 8GB used: 0% capacity: 60GB available: 0GB used: 100% capacity: 40GB available: 40GB used: 0% A 큐의 모든 capacity를 소모했다고 가정
  • 53. 53 Capacity Scheduler Configuration root A B b1 b2 capacity: 32GB available: 32GB used: 0% capacity: 8GB available: 0GB used: 100% capacity: 60GB available: 0GB used: 100% capacity: 40GB available: 32GB used: 20% b1에 새로운 각각 4GB를 요구하는 job 두 개가 제출 capacity: 100GB available: 32GB used: 72%
  • 54. 54 Capacity Scheduler Configuration root A B b1 b2 capacity: 32GB available: 24GB used: 0% capacity: 8GB available: 0GB used: 200% capacity: 60GB available: 0GB used: 100% capacity: 40GB available: 24GB used: 40% b1의 capacity를 모두 소진한 상태에서 b1에 8GB를 요구하는 새로운 job이 제출 capacity: 100GB available: 24GB used: 86%
  • 55. 55 Capacity Scheduler Configuration root A B b1 b2 capacity: 32GB available: 24GB used: 0% capacity: 8GB available: 0GB used: 200% capacity: 60GB available: 0GB used: 100% capacity: 40GB available: 24GB used: 40% b2에 32GB를 요구하는 job이 제출되었지만 요구하는 자원이 클러스터의 가용한 자원보다 크기 때문에 wait상태로 다른 job이 자원을 반납할 때까지 대기 capacity: 100GB available: 24GB used: 86%
  • 56. 56 Capacity Scheduler Configuration root A B b1 b2 capacity: 32GB available: 0GB used: 100% capacity: 8GB available: 0GB used: 100% capacity: 60GB available: 0GB used: 100% capacity: 40GB available: 0GB used: 100% b1에서 8G의 자원을 할당받아 동작중이던 job이 종료되고 자원을 반납하게되면 회수된 자원을 b2에서 대기중이던 job에 할당 capacity: 100GB available: 0GB used: 100%
  • 58. Fault Tolerance • Task(Container) – 기존 방식과 동일 58 • MRAppMaster는 task가 멈추거나 예외가 발생하면 다시 시작하도록 시도 • 기본 4번: mapred.map.max.attempts, mapred.reduce.max.attempts) • task가 너무 많이 실패할 경우 application이 실패했다고 간주 • 강제로 종료된 task의 경우 실패로 간주하지 않음 • Application Master • AM가 heartbeat을 보내는 것을 멈추면, RM은 AM을 다시 시작하도록 시도 • 기본 2번: yarn.resourcmanager.am.maxretries • MRAppMaster의 optional setting: Job recovery • if false, 모든 task들이 다시 시작 • if true, 실패한 task만을 다시 실행시켜 MRAppMaster의 task의 상태를 회복
  • 59. Fault Tolerance • Node Manager 59 • NM가 heartbeat을 RM으로 보내는 것을 중단 할 경우, RM은 해당 node를 active node에서 제외. • 기본 10분: yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms • MRAppMaster에 의해서 해당 node의 task들은 실패한 것으로 간주. • AppMaster가 있는 node가 실패할 경우, application의 실패로 간주. • Resource Manager • RM이 작동을 멈출 경우, 어떠한 job, task도 container에 배치 불가 • HA(High Availability)를 지원하도록 설정 가능
  • 60. Q & A 60

Editor's Notes

  1. ----- Meeting Notes (2014. 2. 18. 11:16) ----- RM이 죽었을 때 job의 복구 여부