YARN最初設計是爲了解決Hadoop中MapReduce計算框架中的資源管理問題,但如今它已是一個更加通用的資源管理系統,能夠把MapReduce計算框架做爲一個應用程序運行在YARN系統之上,經過YARN來管理資源。html
若是你的應用程序也須要藉助YARN的資源管理功能,你也能夠實現YARN提供的API,將應用程序運行於YARN之上,資源分配與回收統一交給YARN去管理,能夠大大簡化資源管理功能的開發。apache
當前,也有不少應用程序已經能夠構建於YARN之上,如Storm、Spark等計算框架。網絡
YARN Client提交Application到ResourceManager,它會首先建立一個Application上下文件對象,並設置ApplicationMaster必需的資源請求信息,而後提交到ResourceManager。YARN Client也能夠與RM通訊,獲取到一個已經提交併運行的Application的狀態信息等,具體詳見後面ApplicationClientProtocol協議的分析說明架構
ResourceManager是YARN集羣的Master,負責管理整個集羣的資源和資源分配。框架
ResourceManager做爲集羣資源的管理和調度的角色,若是存在單點故障,則整個集羣的資源都沒法使用。oop
NodeManager是集羣中實際擁有實際資源的工做節點,主要負責啓動應用所需的容器,監控資源的使用狀況並將之彙報給調度器。Client提交Job之後,會將組成Job的多個Task調度到對應的NodeManager上進行執行。spa
ApplicationsManager:負責接收做業,協商獲取第一個容器用於執行ApplicationMaster和提供重啓失敗ApplicationMaster container的服務。架構設計
ApplicationMaster:負責同調度器協商以獲取合適的容器,並跟蹤這些容器的狀態和監控其進度。設計
Container:容器中封裝了機器資源,如內存,CPU, 磁盤,網絡等,每一個任務會被分配一個容器,該任務只能在該容器中執行,並使用該容器封裝的資源。orm
參考資料:
[0] MapReduce NextGen aka YARN aka MRv2
http://hadoop.apache.org/docs/r2.7.0/hadoop-yarn/hadoop-yarn-site/index.html
[1] Hadoop YARN架構設計要點