Apache Hadoop YARN: 背景及概述

從2012年8月開始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一項子工程。自此Apache Hadoop由下面四個子工程組成:

  • Hadoop Comon:核心庫,爲其他部分服務
  • Hadoop HDFS:分佈式存儲系統
  • Hadoop MapReduce:MapReduce模型的開源實現
  • Hadoop YARN:新一代Hadoop數據處理框架

      概括來說,Hadoop YARN的目的是使得Hadoop數據處理能力超越MapReduce。衆所周知,Hadoop HDFS是Hadoop的數據存儲層,Hadoop MapReduce是數據處理層。然而,MapReduce已經不能滿足今天廣泛的數據處理需求,如實時/準實時計算,圖計算等。而Hadoop YARN提供了一個更加通用的資源管理和分佈式應用框架。在這個框架上,用戶可以根據自己需求,實現定製化的數據處理應用。而Hadoop MapReduce也是YARN上的一個應用。我們將會看到MPI,圖處理,在線服務等(例如SparkStormHBase)都會和Hadoop MapReduce一樣成爲YARN上的應用。下面將分別介紹傳統的Hadoop MapReduce以及新一代Hadoop YARN架構。

傳統的Apache Hadoop MapReduce架構

       傳統的Apache Hadoop MapReduce系統由JobTracker和TaskTracker組成。其中JobTracker是master,只有一個;TaskTracker是slaves,每個節點部署一個。

alt

圖 1 Apache Hadoop MapReduce系統架構

       JobTracker負責資源管理(通過管理TaskTracker節點),追蹤資源消費/釋放,以及Job的生命週期管理(調度Job的每個Task,追蹤Task進度,爲Task提供容錯等)。而TaskTracker的職責很簡單,依次啓動和停止由JobTracker分配的Task,並且週期性的向JobTracker彙報Task進度及狀態信息。

Apache Hadoop YARN架構

       YARN的最基本思想是將JobTracker的兩個主要職責:資源管理和Job調度管理分別交給兩個角色負責。一個是全局的ResourceManager,一個是每個應用一個的ApplicationMaster。ResourceManager以及每個節點一個的NodeManager構成了新的通用系統,實現以分佈式方式管理應用。

alt

圖2 Apache Hadoop YARN架構

       ResourceManager是系統中仲裁應用之間資源分配的最高權威。而每個應用一個的ApplicationMaster負責向ResourceManager協商資源,並與NodeManager協同工作來執行和管理task。ResourceManager有一個可插入的調度器,負責向各個應用分配資源以滿足容量,組等限制。這個調度器是一個純粹的調度器,意思是它不負責管理或追蹤應用的狀態,也不負責由於硬件錯誤或應用問題導致的task失敗重啓工作。調度器只依據應用的資源需求來執行調度工作,調度內容是一個抽象概念Resource Container,其中包含了資源元素,例如內存,CPU,網絡,磁盤等。

       NodeManager是每個節點一個的slave,其負責啓動應用的container,管理他們的資源使用(內存,CPU,網絡,磁盤),並向ResourceManager彙報整體的資源使用情況。

       每個應用一個的ApplicationMaster負責向ResourceManager的調度器協商合理的Resource Container並追蹤他們的狀態,管理進度。從系統角度看,ApplicationMaster本身也是以一個普通container的形式執行。

總結

       由於MapReduce在計算模型方面的侷限性,Hadoop實現了更加通用的資源管理系統YARN,並將MapReduce作爲其一個應用。在YARN上可以實現多種多樣計算模型的應用以滿足業務需要。另外由於YARN系統將JobTracker的主要工作進行切分,使得master的壓力大大減小(ResourceManager承擔的工作量遠小於JobTracker),這樣YARN系統就可以支持更大的集羣規模。

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