1. YARN產(chǎn)生背景
- Hadoop1.x時(shí):MapReduce1.x存在問(wèn)題:?jiǎn)吸c(diǎn)故障&節(jié)點(diǎn)壓力大不易擴(kuò)展&不能支持除了MR以外的任務(wù)
- MapReduce:Master/Slave架構(gòu),一個(gè)JobTracker帶多個(gè)TaskTracker。
- JobTracker:負(fù)責(zé)資源管理和作業(yè)調(diào)度。整個(gè)集群中只有一個(gè)JobTracker,如果出現(xiàn)故障,整個(gè)集群就會(huì)崩潰。
- TaskTracker:定期向JT匯報(bào)本節(jié)點(diǎn)的健康狀況、資源使用情況、作業(yè)執(zhí)行情況;接受到來(lái)自JT的命令:?jiǎn)?dòng)/殺死任務(wù)。
- 資源利用率&運(yùn)維成本
- YARN:不同計(jì)算框架可以共享同一個(gè)HDFS集群上的數(shù)據(jù),享受整體的資源調(diào)度。
- XXX(Spark/MapReduce/Strom/Flink) on YARN的好處:與其他計(jì)算框架共享集群資源,按資源需要分配,進(jìn)而提高集群資源的利用率。
2. YARN概述
- Yet Another Resource Negotiator
- 通用的資源管理系統(tǒng)
- 為上層應(yīng)用提供統(tǒng)一的資源調(diào)度
3. YARN架構(gòu)

yarn架構(gòu).jpg
- ResourceManager: RM
- 整個(gè)集群同一時(shí)間提供服務(wù)的RM只有一個(gè)(生產(chǎn)一般有兩個(gè),一主一備),負(fù)責(zé)集群資源的統(tǒng)一管理和調(diào)度。
- 處理客戶端請(qǐng)求:提交一個(gè)作業(yè),殺死一個(gè)作業(yè)。
- 監(jiān)控我們的NM,一旦某個(gè)NM掛了,那么該NM上運(yùn)行的任務(wù)需要告訴我們的AM來(lái)如何進(jìn)行處理(重啟)。
- NodeManager: NM
- 整個(gè)集群中有多個(gè),負(fù)責(zé)自己本身節(jié)點(diǎn)資源管理和使用。
- 定時(shí)向RM匯報(bào)本節(jié)點(diǎn)的資源使用情況。
- 接受并處理來(lái)自RM的各種命令:?jiǎn)?dòng)Container。
- 處理來(lái)自AM的命令。
- 單個(gè)節(jié)點(diǎn)的資源管理。
- ApplicationMaster: AM
- 每個(gè)應(yīng)用程序?qū)?yīng)一個(gè):MR、Spark、負(fù)責(zé)應(yīng)用程序的管理。
- 為應(yīng)用程序向RM申請(qǐng)資源(core、memory),分配給內(nèi)部Task處理。
- 需要與NM通信:?jiǎn)?dòng)/停止task,task是運(yùn)行在container里面,AM也是運(yùn)行在container里面的。
- Container
- 封裝了CPU、Memory等資源的一個(gè)容器。
- 是一個(gè)任務(wù)運(yùn)行環(huán)境的抽象。
- Client
- 提交作業(yè)
- 查詢作業(yè)的運(yùn)行進(jìn)度
- 殺死作業(yè)
4. YARN執(zhí)行流程

yarn調(diào)用流.jpg
5. YARN環(huán)境搭建
- mapred-site.xml
<configuration>
<!--告訴MapReduce,任務(wù)跑在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- yarn-site.xml
<configuration>
<!--告訴yarn的NodeManage用的哪一個(gè)-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 啟動(dòng)YARN相關(guān)進(jìn)程:sbin/start-yarn.sh
- 驗(yàn)證YARN是否啟動(dòng)成功
- jps查看
- NodeManager
- ResourceManager
- http://localhost:8088
- jps查看
- 停止YARN相關(guān)進(jìn)程:sbin/stop-yarn.sh
6. 提交作業(yè)到Y(jié)ARN執(zhí)行
- MapReduce作業(yè)提交到Y(jié)ARN上運(yùn)行
- 使用Hadoop MapReduce示例程序:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar
- 啟動(dòng)MR程序:hadoop jar hadoop-mapreduce-examples-3.1.0.jar pi 1 2
- 使用http://localhost:8088 查看結(jié)構(gòu)