概述
為上層應(yīng)用提供統(tǒng)一的資源管理和作業(yè)調(diào)度的通用框架
YARN產(chǎn)生背景
1.MapReduce1.x的引起的問題
master/slave: JobTracker&TaskTracker
一個(gè)JobTracker管理多個(gè)TaskTracker
JobTracker:?jiǎn)吸c(diǎn)埂伦、壓力大思恐、
僅支持MapReduce作業(yè)膊毁,其他諸如Spark等架構(gòu)無(wú)法運(yùn)行
2.資源資源率&運(yùn)維成本
所有的計(jì)算框架運(yùn)行在一個(gè)集群中婚温,共享一個(gè)集群的資源媳否,做到按需分配。
YARN框架
把原有的JobTracker拆成兩個(gè)兩個(gè)進(jìn)程
資源管理(ResourceManager RM)逆日,
作業(yè)調(diào)度/監(jiān)控(per-application ApplicationMaster AM)
RM 和 per-node slave室抽,NameManger 組成了數(shù)據(jù)計(jì)算框架
client: 向RM提交,殺死任務(wù)
RM:處理來(lái)自client 的請(qǐng)求坪圾,啟動(dòng)/監(jiān)控AM兽泄,監(jiān)控NM
AM:每個(gè)Application對(duì)應(yīng)一個(gè)AM, AM向RM申請(qǐng)資源用于NM上啟動(dòng)對(duì)應(yīng)的task病梢,主要就是做數(shù)據(jù)的切分,為每個(gè)task向RM申請(qǐng)資源(container)
NM:真正工作+ 向RM發(fā)送心跳信息觅彰,接收來(lái)自RM的請(qǐng)求來(lái)啟動(dòng)任務(wù)钮热,處理來(lái)自AM的命令
container:任務(wù)的運(yùn)行抽象,可以看作是一系列的物理信息 memory隧期,cpu...
執(zhí)行流程
1.Client提交作業(yè)到 RM
2.RM選擇一個(gè)NM,啟動(dòng)一個(gè)container并在其上運(yùn)行一個(gè)AM
3.AM 向RM上申請(qǐng)資源宏蛉,隨后到對(duì)應(yīng)的NM上啟動(dòng)container鸵闪,然后在這些container上啟動(dòng)諸如map task或者reduce task即可
注意:如果作業(yè)很小, AM選擇在其自己的 JVM 中運(yùn)行任務(wù)
YARN部署
*** 在配置好hadoop的基礎(chǔ)上
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
啟動(dòng)
sbin/start-yarn.sh
jps 發(fā)現(xiàn)有RM 和NM 進(jìn)程則啟動(dòng)成功
關(guān)閉
sbin/stop-yarn.sh
通過(guò)訪問8088端口可以看到y(tǒng)arn的web界面
提交任務(wù)到Y(jié)ARN上
hadoop jar jar包... # 可以使用hadoop里面的exmaple目錄下的jar查看效果
提交自己開發(fā)的MR作業(yè)到Y(jié)ARN上運(yùn)行的步驟:
1)mvn clean package -DskipTests
windows/Mac/Linux ==> Maven
2)把編譯出來(lái)的jar包(項(xiàng)目根目錄/target/...jar)以及測(cè)試數(shù)據(jù)上傳到服務(wù)器
scp xxxx hadoop@hostname:directory
- 把數(shù)據(jù)上傳到HDFS
hadoop fs -put xxx hdfspath - 執(zhí)行作業(yè)
hadoop jar xxx.jar 完整的類名(包名+類名) args..... - 到Y(jié)ARN UI(8088) 上去觀察作業(yè)的運(yùn)行情況
6)到輸出目錄去查看對(duì)應(yīng)的輸出結(jié)果