Hadoop之Yarn工作机制详解
Hadoop之Yarn工作機制詳解
目錄
1. Yarn概述
Yarn是一個資源調度平臺,負責為運算程序提供服務器運算資源,相當于一個分布式的操作系統平臺,而MapReduce等運算程序則相當于運行于操作系統之上的應用程序。
2. Yarn基本架構
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等組件構成,如下圖所示。
3. Yarn工作機制
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申請容器,運行reduce task。
reduce task向maptask獲取相應分區的數據。
程序運行完畢后,MR會向RM申請注銷自己。
4. 作業提交全過程詳解
作業提交全過程詳解
第1步:client調用job.waitForCompletion方法,向整個集群提交MapReduce作業。
第2步:client向RM申請一個作業id。
第3步:RM給client返回該job資源的提交路徑和作業id。
第4步:client提交jar包、切片信息和配置文件到指定的資源提交路徑。
第5步:client提交完資源后,向RM申請運行MrAppMaster。
第6步:當RM收到client的請求后,將該job添加到容量調度器中。
第7步:某一個空閑的NM領取到該job。
第8步:該NM創建Container,并產生MRAppmaster。
第9步:下載client提交的資源到本地。
第10步:MrAppMaster向RM申請運行多個maptask任務資源。
第11步:RM將運行maptask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務并創建容器。
第12步:MR向兩個接收到任務的NodeManager發送程序啟動腳本,這兩個NodeManager分別啟動maptask,maptask對數據分區排序。
第13步:MrAppMaster等待所有maptask運行完畢后,向RM申請容器,運行reduce task。
第14步:reduce task向maptask獲取相應分區的數據。
第15步:程序運行完畢后,MR會向RM申請注銷自己。
YARN中的任務將其進度和狀態(包括counter)返回給應用管理器, 客戶端每秒(通過mapreduce.client.progressmonitor.pollinterval設置)向應用管理器請求進度更新, 展示給用戶。
除了向應用管理器請求作業進度外, 客戶端每5分鐘都會通過調用waitForCompletion()來檢查作業是否完成。時間間隔可以通過mapreduce.client.completion.pollinterval來設置。作業完成之后, 應用管理器和container會清理工作狀態。作業的信息會被作業歷史服務器存儲以備之后用戶核查。
總結
以上是生活随笔為你收集整理的Hadoop之Yarn工作机制详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop之Hadoop数据压缩
- 下一篇: Hadoop之资源调度器与任务推测执行