Hadoop3.x 之 Yarn資源調度器
- 一、Yarn資源調度器
- 1. Yarn基本架構
- 2、Yarn作業機制
- 3、作業提交全程序
- 1、HDFS、YARN、MapReduce三者關系
- 2、作業提交程序之YARN
- 3、作業提交程序之HDFS & MapReduce
- 1、作業提交
- 2、作業初始化
- 3、任務分配
- 4、任務運行
- 5、進度和狀態更新
- 6、作業完成
- 4、資源調度器
- 1、先進先出調度器(FIFO)
- 2、容量調度器(Capacity Scheduler)
- 1、容量調度器特點
- 2、容量調度器資源分配演算法
- 3、公平調度器(Fair Scheduler)
- 1、公平調度器特點
- 2、公平調度器——缺額
- 5、任務的推測執行
- 二級目錄
- 三級目錄
一、Yarn資源調度器
思考:
1)如何管理集群資源?
2)如何給任務合理分配資源?

Yarn是一個資源調度平臺,負責為運算程式提供服務器運算資源,相當于一個分布式的作業系統平臺,而MapReduce等運算程式則相當于運行于作業系統之上的應用程式,
1. Yarn基本架構
YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等組件構成,

2、Yarn作業機制

- MR 程式提交到客戶端所在的節點,
- YarnRunner 向 ResourceManager 申請一個 Application,
- RM 將該應用程式的資源路徑回傳給 YarnRunner,
- 該程式將運行所需資源提交到 HDFS 上,
- 程式資源提交完畢后,申請運行 mrAppMaster,
- RM 將用戶的請求初始化成一個 Task,
- 其中一個 NodeManager 領取到 Task 任務,
- 該 NodeManager 創建容器 Container,并產生 MRAppmaster,
- Container 從 HDFS 上拷貝資源到本地,
- MRAppmaster 向 RM 申請運行 MapTask 資源,
- RM 將運行 MapTask 任務分配給另外兩個 NodeManager,另兩個 NodeManager 分別領取任務并創建容器,
- MR 向兩個接收到任務的 NodeManager 發送程式啟動腳本,這兩個 NodeManager分別啟動 MapTask,MapTask 對資料磁區排序,
- MrAppMaster 等待所有 MapTask 運行完畢后,向 RM 申請容器,運行 ReduceTask,
- ReduceTask 向 MapTask 獲取相應磁區的資料,
- 程式運行完畢后,MR 會向 RM 申請注銷自己,
3、作業提交全程序
1、HDFS、YARN、MapReduce三者關系

2、作業提交程序之YARN

3、作業提交程序之HDFS & MapReduce

作業提交全程序詳解
1、作業提交
第 1 步:Client 呼叫 job.waitForCompletion 方法,向整個集群提交 MapReduce 作業,
第 2 步:Client 向 RM 申請一個作業 id,
第 3 步:RM 給 Client 回傳該 job 資源的提交路徑和作業 id,
第 4 步:Client 提交 jar 包、切片資訊和組態檔到指定的資源提交路徑,
第 5 步:Client 提交完資源后,向 RM 申請運行 MrAppMaster,
2、作業初始化
第 6 步:當 RM 收到 Client 的請求后,將該 job 添加到容量調度器中,
第 7 步:某一個空閑的 NM 領取到該 Job,
第 8 步:該 NM 創建 Container,并產生 MRAppmaster,
第 9 步:下載 Client 提交的資源到本地,
3、任務分配
第 10 步:MrAppMaster 向 RM 申請運行多個 MapTask 任務資源,
第 11 步:RM 將運行 MapTask 任務分配給另外兩個 NodeManager,另兩個 NodeManager分別領取任務并創建容器,
4、任務運行
第 12 步:MR 向兩個接收到任務的 NodeManager 發送程式啟動腳本,這兩個
NodeManager 分別啟動 MapTask,MapTask 對資料磁區排序,
第13步:MrAppMaster等待所有MapTask運行完畢后,向RM申請容器,運行ReduceTask,
第 14 步:ReduceTask 向 MapTask 獲取相應磁區的資料,
第 15 步:程式運行完畢后,MR 會向 RM 申請注銷自己,
5、進度和狀態更新
YARN 中的任務將其進度和狀態(包括 counter)回傳給應用管理器, 客戶端每秒(通過
mapreduce.client.progressmonitor.pollinterval 設定)向應用管理器請求進度更新, 展示給用戶,
6、作業完成
除了向應用管理器請求作業進度外, 客戶端每 5 秒都會通過呼叫 waitForCompletion()來檢查作業是否完成,時間間隔可以通過 mapreduce.client.completion.pollinterval 來設定,作業
完成之后, 應用管理器和 Container 會清理作業狀態,作業的資訊會被作業歷史服務器存盤以備之后用戶核查,
4、資源調度器
目前,Hadoop 作業調度器主要有三種:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler),Apache Hadoop3.1.3 默認的資源調度器是 Capacity Scheduler, CDH 框架默認調度器是 Fair 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>
1、先進先出調度器(FIFO)
FIFO 調度器(First In First Out):單佇列,根據提交作業的先后順序,先來先服務,

優點:簡單易懂;
缺點:不支持多佇列,生產環境很少使用;
2、容量調度器(Capacity Scheduler)
1、容量調度器特點
Capacity Scheduler 是 Yahoo 開發的多用戶調度器,
容量調度器特點

- 多佇列:每個佇列可配置一定的資源量,每個佇列采用FIFO調度策略,
- 容量保證:管理員可為每個佇列設定資源最低保證和資源使用上限
- 靈活性:如果一個佇列中的資源有剩余,可以暫時共享給那些需要資源的佇列,而一旦該佇列有新的應用程式提交,則其他佇列借調的資源會歸還給該佇列,
- 多租戶:
支持多用戶共享集群和多應用程式同時運行,
為了防止同一個用戶的作業獨占佇列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定,
2、容量調度器資源分配演算法

3、公平調度器(Fair Scheduler)
Fair Schedulere 是 Facebook 開發的多用戶調度器,
1、公平調度器特點

2、公平調度器——缺額

5、任務的推測執行
二級目錄
三級目錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291810.html
標籤:其他
