2013年的Hadoop峰會上,YARN是一個熱點話題,YARN本質上是Hadoop的新作業系統,突破了MapReduce框架的性能瓶頸。 Murthy認為Hadoop和YARN的組合是企業大資料平臺致勝的關鍵。
Yahoo!最初開發Hadoop,是為了用於搜索和索引Web網頁,目前很多的搜索服務都是基於這個框架的,但是Hadoop從本質上來說還只是一個解決方案。 2013年的Hadoop峰會上,YARN是一個熱點話題。 三年的醞釀,YARN本質上是Hadoop的作業系統,突破了MapReduce框架的性能瓶頸。
MapReduce是在HDFS下操縱資料的主要機制。 對於處理和分析海量資料(如多年的日誌檔和其它半結構化的資料),這是一個很好的選擇,但並不適合其它類型的資料分析。 三年前,Hortonworks的創始人兼架構師Arun Murthy開始著手重新架構Hadoop(Hortonworks剛剛宣佈在新一輪的融資中獲得了5000萬美元,Tenaya Capital和Dragoneer Investment Group主導了本輪融資,前投資人Benchmark Capital、Index Ventures和Yahoo!也參與其中),以使其成為一個更通用的大資料平臺。
Arun Murthy提到:「著手構建Hadoop2.0時,我們希望從根本上重新設計Hadoop的架構,達到可以在Hadoop上運行多個應用程式並處理相關資料集的目的。 這樣一來,多種類型的應用程式都可以高效、可控地運行在同一個集群上。 這是以Hadoop 2.0為基礎的Apache YARN之所以能夠誕生的真正原因。 通過YARN管理集群的資源請求,Hadoop從一個單一應用程式系統升級成為一個多應用程式的作業系統。 」
Murthy所說的其它類型的應用程式包括:機器學習,圖像分析,流分析和互動查詢功能等。 一旦YARN全面投入使用,開發者將能通過YARN「作業系統」將存儲在HDFS中的資料用於這些應用程式。 Hive就是由Facebook開發的HDFS上層的SQL類型的資料倉儲工具,但是後臺的資料處理還要通過MapReduce。 Hive很消耗資源,會影響其它同時運行的作業。 其它Hadoop相關的資料分析子專案也都是類似的情況。
YARN是一個真正的Hadoop資源管理器,允許多個應用程式同時、高效地運行在一個的集群上。 有了YARN,Hadoop將是一個真正的多應用程式平臺,可服務于整個企業。 Murthy表示通過YARN可以以一種前所未有的方式與資料交互,YARN已經被用於Hortonworks的資料平臺,Hadoop和YARN的組合是企業大資料平臺致勝的關鍵。
MapReduce2.0——YARN的基本架構
MapReduce在Hadoop 0.23時已經經歷了一次大規模更新,新版本的MapReduce2.0被稱為YARN或MRv2。
YARN的基本思想是將JobTracker的兩個主要功能(資源管理和作業調度/監控)分離,主要方法是創建一個全域的ResourceManager(RM)和若干個針對應用程式的ApplicationMaster(AM)。 這裡的應用程式是指傳統的MapReduce作業或作業的DAG(有向無環圖)。
ResourceManager和每個slave結點的NodeManager(NM)構成了資料計算框架。 ResourceManager負責最終將資源配置到各個應用程式。 NodeManager是每台機器的框架代理,負責管理容器,監控它們的資源使用方式(CPU,記憶體,硬碟,網路),同時向ResourceManager/Scheduler彙報。 針對各個應用程式的ApplicationMaster實際上是一個詳細的框架庫,它結合從 ResourceManager 獲得的資源和 NodeManager 協同工作來運行和監控任務。 ApplicationMaster同時負責向Scheduler請求適當的資源容器,跟蹤它們的使用狀態並監控其進展。
ResourceManager中有兩個主要元件:Scheduler和ApplicationsManager。
Scheduler負責給應用程式分配資源。 Scheduler從某種意義上說是一種純粹的調度,它不監控和跟蹤應用程式的狀態,另外它也不負責重啟應用程式或者硬體故障造成的失敗。 Scheduler根據應用程式的資源需求執行調度,這些需求基於一個抽象的資源概念Container,包括記憶體、CPU、硬碟和網路等。 ApplicationsManager負責接收作業提交,將應用程式分配給具體的ApplicationMaster,並負責重啟失敗的ApplicationMaster。