一 、需要知道的內容
1.ResourceManager ------>yarn的老大
2.NodeManager ------>yarn的小弟
3.ResourceManager調度器 a.默認調度器------>先進先出FIFO
b.公平調度器------>每個任務都有執行的機會
......
4.心跳機制 ------>NodeManager可通過心跳機制將節點健康狀況實時匯報給ResourceManager,而ResourceManager則會 根據每個NodeManager的健康狀況適當調整分配的任務數目。當NodeManager認為自己的健康狀況“欠 佳”時,可讓ResourceManager不再分配任務,待健康狀況好轉時,再分配新任務。
5.NodeManager子進程------>獨立於NodeManager,不在NodeManager內部
二 、Hadoop工作流程:
1.Client中,客戶端提交一個mr的jar包給JobClient(提交方式:hadoop jar ...)
2.JobClient持有ResourceManager的一個代理對象,它向ResourceManager發送一個RPC請求,告訴ResourceManager作業開始,
然后ResourceManager返回一個JobID和一個存放jar包的路徑給Client
3.Client將得到的jar包的路徑作為前綴,JobID作為后綴(path = hdfs上的地址 + jobId) 拼接成一個新的hdfs的路徑,然后Client通過FileSystem向hdfs中存放jar包,默認存放10份
(NameNode和DateNode等操作)
4.開始提交任務,Client將作業的描述信息(JobID和拼接后的存放jar包的路徑等)RPC返回給ResourceManager
5.ResourceManager進行初始化任務,然后放到一個調度器中
6.ResourceManager讀取HDFS上的要處理的文件,開始計算輸入分片,每一個分片對應一個MapperTask,根據數據量確定起多少個mapper,多少個reducer
7.NodeManager 通過心跳機制向ResourceManager領取任務(任務的描述信息)
8.領取到任務的NodeManager去Hdfs上下載jar包,配置文件等
9.NodeManager啟動相應的子進程yarnchild,運行mapreduce,運行maptask或者reducetask
10.map從hdfs中讀取數據,然后傳給reduce,reduce將輸出的數據給回hdfs
--------------------- 本文來自 小虹塵 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/hongchenlingtian/article/details/53524705?utm_source=copy