本篇博文,博主爲大家介紹Yarn和MapReduce的作業提交全過程。
一. Yarn的作業提交過程
作業提交全過程詳解
1.1 作業提交
- 第1步:Client調用job.waitForCompletion方法,向整個集羣提交MapReduce作業。
- 第2步:Client向RM申請一個作業id。
- 第3步:RM給Client返回該job資源的提交路徑和作業id。
- 第4步:Client提交jar包、切片信息和配置文件到指定的資源提交路徑。
- 第5步:Client提交完資源後,向RM申請運行MrAppMaster。
1.2 作業初始化
- 第6步:當RM收到Client的請求後,將該job添加到容量調度器中。
- 第7步:某一個空閒的NM領取到該Job。
- 第8步:該NM創建Container,併產生MRAppmaster。
- 第9步:下載Client提交的資源到本地。
1.3 任務分配
- 第10步:MrAppMaster向RM申請運行多個MapTask任務資源。
- 第11步:RM將運行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並創建容器。
1.4 任務運行
- 第12步:MR向兩個接收到任務的NodeManager發送程序啓動腳本,這兩個NodeManager分別啓動MapTask,MapTask對數據分區排序。
- 第13步:MrAppMaster等待所有MapTask運行完畢後,向RM申請容器,運行ReduceTask。
- 第14步:ReduceTask向MapTask獲取相應分區的數據。
- 第15步:程序運行完畢後,MR會向RM申請註銷自己。
1.5 進度和狀態更新
- YARN中的任務將其進度和狀態(包括counter)返回給應用管理器,客戶端每秒(通mapreduce.client.progressmonitor.pollinterval設置)嚮應用管理器請求進度更新,展示給用戶。
1.6 作業完成
除了嚮應用管理器請求作業進度外, 客戶端每5秒都會通過調用waitForCompletion()來檢查作業是否完成。時間間隔可以通過mapreduce.client.completion.pollinterval來設置。作業完成之後, 應用管理器和Container會清理工作狀態。作業的信息會被作業歷史服務器存儲以備之後用戶覈查。
二. MapReduce的作業提交過程(在此只圖片說明)
好了,本次關於Yarn和MapReduce的作業提交全過程的內容就介紹到這裏。下一篇文章將爲大家介紹Yarn調度器,敬請期待!
^ _ ^ ❤️ ❤️ ❤️
碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注我哦!