ResourceManager和與NodeManager組成整個數據計算框架。ResourceManager是系統中掌控所有應用的資源分配的最終決策者,NodeManager是每臺機器上的框架代理,它負責監測containers的資源使用情況(CPU,內存,磁盤,網絡),並向ResourceManager和Scheduler彙報。
每個應用程序ApplicationMaster實際上是一個特定的框架庫(a framework specific library ),其任務是:
1)與ResourceManager協商並獲得資源
2))和NodeManager(S)合作,執行和監控tasks。
調度器根據容量,隊列等之間的密切約束,將系統中的資源分配給各個正在運行的應用。這裏的調度器僅負責資源的調度,它不再負責監控或者跟蹤應用的執行狀態,有些task因爲應用程序或者硬件錯誤而失敗時,他也不再爲task的重啓提供授權。調度器基於各個應用的資源需求進行調度,這種調度基於resource Container的抽象概念,resource Container將內存,CPU,磁盤,網絡等資源封裝在一起。
調度器具有可插拔策略,主要負責將集羣中得資源分配給多個隊列和應用。yarn當前有多個資源調度器,比如Capacity Scheduler和Fair Scheduler等,他們都以插件的形式運行。
ApplicationsManager負責接受作業提交,協商並獲取第一個container用於執行這個應用程序的ApplicationMaster 和提供重啓失敗的ApplicationMaster container的服務。每一個應用程序的ApplicationMaster 的任務有:
1)和調度器協商並獲得合適數量的resource Containers
2)跟蹤containers的狀態和監控進展情況
hadoop-2.x版本的mapreduce仍然保持着與以前的穩定版本(Hadoop-1.x)的API的兼容性。這意味着以前的mapreduce jobs只需要重新編譯一下就可以再yarn上運行。