从传统操作系统角度理解Hadoop YARN
當用戶向YARN中提交一個應用程序后,YARN將分兩個階段運行該應用程序:第一個階段是啟動ApplicationMaster;第二個階段是由ApplicationMaster創建應用程序,為它申請資源,并監控它的整個運行過程,直到運行成功。如圖2-7所示,YARN的工作流程分為以下幾個步驟(圖和文字摘自《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》一書第12章 “下一代MapReduce框架”):
步驟1?用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序等。
步驟2?ResourceManager為該應用程序分配第一個Container,并與對應的NodeManager通信,要求它在這個Container中啟動應用程序的ApplicationMaster。
步驟3?ApplicationMaster首先向ResourceManager注冊,這樣,用戶可以直接通過ResourceManage查看應用程序的運行狀態,然后,它將為各個任務申請資源,并監控它的運行狀態,直到運行結束,即重復步驟4~7。
步驟4?ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
步驟5?一旦ApplicationMaster申請到資源后,則與對應的NodeManager通信,要求其啟動任務。
步驟6?NodeManager為任務設置好運行環境(包括環境變量、jar包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務。
步驟7?各個任務通過某個RPC協議向ApplicationMaster匯報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態。
步驟8?應用程序運行完成后,ApplicationMaster向ResourceManager注銷,并關閉自己。
在單機程序設計中,為了快速處理一個大的數據集,通常采用多線程并行編程,大體流程如下:先由操作系統啟動一個主線程,由它負責數據切分、任務分配、子線程啟動和銷毀等工作,而各個子線程只負責計算自己的數據,當所有子線程處理完數據后,主線程再退出。類比理解,YARN上的應用程序運行過程與之非常相近,只不過它是集群上的分布式并行編程。可將YARN看做一個云操作系統,它負責為應用程序啟動ApplicationMaster(相當于主線程),然后再由ApplicationMaster負責數據切分、任務分配、啟動和監控等工作,而由ApplicationMaster啟動的各個Task(相當于子線程)僅負責自己的計算任務,當所有任務計算完成后,ApplicationMaster認為應用程序運行完成,然后退出。
原創文章,轉載請注明:?轉載自董的博客
本文鏈接地址:?http://dongxicheng.org/mapreduce-nextgen/understand-hadoop-yarn-from-os-view/
總結
以上是生活随笔為你收集整理的从传统操作系统角度理解Hadoop YARN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇总运行在Hadoop YARN上的开源
- 下一篇: Hadoop每日一讨论整理版