MapReduce1.0 VS Yarn

簡答來說,經典的MapReduce中主要有兩個角色JobTracker和TaskTracker,
JobTracker負責作業調度和任務進度監督,追蹤任務,任務登記等。
TaskTracker運行作業劃分後的任務,且對map任務和reduce任務,都有固定數量的任務槽。

下面是MapReduce的數據流和控制流圖示:
這裏寫圖片描述

yarn將JobTracker中兩種角色分爲兩個獨立的守護進程:
管理集羣上資源使用的資源管理器(Resource Manager)
管理上任務運行生命週期的應用管理器(Application Master)
yarn中不區分map slot和reduce slot,使用資源池。

下面是yarn框架的簡單圖示:

yarn框架的簡單描述

YARN 分層結構的本質是 ResourceManager。這個實體控制整個集羣並管理應用程序向基礎計算資源的分配。ResourceManager 將各個資源部分(計算、內存、帶寬等)安排給基礎NodeManager(YARN的每節點代理)。ResourceManager 還與 ApplicationMaster一起分配資源,NodeManager一起啓動和監視它們的基礎應用程序。ApplicationMaster 承擔了以前的 TaskTracker 的一些角色,ResourceManager 承擔了 JobTracker 的角色。

ApplicationMaster 管理一個在 YARN 內運行的應用程序的每個實例。ApplicationMaster 負責協調來自 ResourceManager 的資源,並通過 NodeManager監視容器的執行和資源使用(CPU、內存等的資源分配)。

NodeManager 管理一個 YARN 集羣中的每個節點。MRv1 通過插槽管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表着可供一個特定應用程序使用的針對每個節點的資源。 負責啓動application啓動所需的container。NodeManager和ResourceManager共同組成整個數據計算框架。

下面是yarn運行的簡單圖示:
這裏寫圖片描述

要使用一個 YARN 集羣,首先需要來自包含一個應用程序的客戶的請求。ResourceManager協商一個容器的必要資源,啓動一個 ApplicationMaster來表示已提交的應用程序。通過使用一個資源請求協議,ApplicationMaster 協商每個節點上供應用程序使用的資源容器。執行應用程序時,ApplicationMaster監視容器直到完成。當應用程序完成時,ApplicationMaster 從 ResourceManager 註銷其容器,執行週期就完成了。

參考:《Hadoop權威指南》《Hadoop實戰》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章