yarn的基本架構

yarn的基本設計思想是將資源管理和job的調度和監控功能拆分成兩個單獨的守護進程。具體實現是有一個全球的ResourceManager(RM)和每個應用程序有一個ApplicationMaster(AM)。應用程序可以是單個job或DAG jobs。

ResourceManager和與NodeManager組成整個數據計算框架。ResourceManager是系統中掌控所有應用的資源分配的最終決策者,NodeManager是每臺機器上的框架代理,它負責監測containers的資源使用情況(CPU,內存,磁盤,網絡),並向ResourceManager和Scheduler彙報。

每個應用程序ApplicationMaster實際上是一個特定的框架庫(a framework specific library ),其任務是:
1)與ResourceManager協商並獲得資源
2))和NodeManager(S)合作,執行和監控tasks。




ResourceManager由兩個組件構成:調度器Scheduler 和 應用管理器ApplicationsManager.
調度器根據容量,隊列等之間的密切約束,將系統中的資源分配給各個正在運行的應用。這裏的調度器僅負責資源的調度,它不再負責監控或者跟蹤應用的執行狀態,有些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上運行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章