Yarn 是一個資源調度平臺,負責為運算程序提供服務器運算資源,相當于一個分布式的操作系統平臺,而 MapReduce 等運算程序則相當于運行于操作系統之上的應用程序。
工作機制詳解:
1)MR 程序提交到客戶端所在的節點。
2)YarnRunner 向 ResourceManager 申請一個 Application。
3)RM 將該應用程序的資源路徑返回給 YarnRunner。
4)該程序將運行所需資源提交到 HDFS 上。
5)程序資源提交完畢后,申請運行 mrAppMaster。
6)RM 將用戶的請求初始化成一個 Task。
7)其中一個 NodeManager 領取到 Task 任務。
8)該 NodeManager 創建容器 Container,并產生 MRAppmaster。
9)Container 從 HDFS 上拷貝資源到本地。
10)MRAppmaster 向 RM 申請運行 MapTask 資源。
11)RM 將運行 MapTask 任務分配給另外兩個 NodeManager,另兩個 NodeManager 分別領取任務并創建容器。
12)MR 向兩個接收到任務的 NodeManager 發送程序啟動腳本,這兩個 NodeManager 分別啟動 MapTask,MapTask 對數據分區排序。
13)MrAppMaster 等待所有 MapTask 運行完畢后,向 RM 申請容器,運行 ReduceTask。
14)ReduceTask 向 MapTask 獲取相應分區的數據。
15)程序運行完畢后,MR 會向 RM 申請注銷自己。
作業提交全過程詳解:
1)作業提交
2)作業初始化
3)任務分配
4)任務運行
5)進度和狀態更新
6)作業完成
目前,Hadoop作業調度器主要有三種:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默認的資源調度器是Capacity Scheduler。
[yarn-default.xml]
<property>
<description>The class to use as the resource scheduler.</description>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
先進先出調度器
容量調度器
公平調度器
作業完成時間取決于最慢的任務完成時間,一個作業由若干個 Map 任務和 Reduce 任務構成,因硬件老化、軟件Bug等,某些任務可能運行非常慢,系統中有 99% 的 Map 任務都完成了,只有少數幾個 Map 老是進度很慢,完不成,怎么辦?
推測執行機制
為拖后腿的任務啟動一個備份任務,同時運行,誰先運行完用誰的結果
執行推測任務的前提條件
不能啟用推測執行機制情況
原理圖:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。