Apache Hadoop 是最風行的大數據處理懲罰東西之一。它多年來被很多公司樂成陳設在出產中。盡量 Hadoop 被視為靠得住的、可擴展的、富有本錢效益的辦理方案,但大型開拓人員社區仍在不絕改造它。最終,2.0 版提供了多項革命性成果,個中包羅 Yet Another Resource Negotiator (YARN)、HDFS Federation 和一個高度可用的 NameNode,它使得 Hadoop 集群越發高效、強大和靠得住。在本文中,將對 YARN 與 Hadoop 中的漫衍式處理懲罰層的以前版本舉辦較量,相識 YARN 所帶來的優勢。
簡介
Apache Hadoop 2.0 包括 YARN,,它將資源打點和處理懲罰組件分隔。基于 YARN 的架構不受 MapReduce 約束。本文將先容 YARN,以及它相對付 Hadoop 中以前的漫衍式處理懲罰層的一些優勢。本文將相識如何利用 YARN 的可伸縮性、效率和機動性加強您的集群。
Apache Hadoop 簡介
Apache Hadoop 是一個開源軟件框架,可安裝在一個商用呆板集群中,使呆板可互相通信并協同事情,以高度漫衍式的方法配合存儲和處理懲罰大量數據。最初,Hadoop 包括以下兩個主要組件:Hadoop Distributed File System (HDFS) 和一個漫衍式計較引擎,該引擎支持以 MapReduce 功課的形式實現和運行措施。
MapReduce 是 Google 推廣的一個簡樸的編程模子,它對以高度并行和可擴展的方法處理懲罰大數據集很有用。MapReduce 的靈感來歷于函數式編程,用戶可將他們的計較表達為 map 和 reduce 函數,將數據作為鍵值對來處理懲罰。Hadoop 提供了一個高級 API 來在各類語言中實現自界說的 map 和 reduce 函數。
Hadoop 還提供了軟件基本架構,以一系列 map 和 reduce 任務的形式運行 MapReduce 功課。Map 任務 在輸入數據的子集上挪用 map 函數。在完成這些挪用后,reduce 任務 開始在 map 函數所生成的中間數據上挪用 reduce 任務,生成最終的輸出。 map 和 reduce 任務互相單獨運行,這支持并行和容錯的計較。
最重要的是,Hadoop 基本架構認真處理懲罰漫衍式處理懲罰的所有巨大方面:并行化、調治、資源打點、呆板間通信、軟件和硬件妨礙處理懲罰,等等。得益于這種清潔的抽象,實現處理懲罰數百(可能甚至數千)個呆板上的數 TB 數據的漫衍式應用措施從未像此刻這么容易過,甚至對付之前沒有利用漫衍式系統的履歷的開拓人員也是如此。
Hadoop 的黃金時代
盡量 MapReduce 模子存在著多種開源實現,但 Hadoop MapReduce 很快就變得很是風行。Hadoop 也是全球最令人歡快的開源項目之一,它提供了多項精彩的成果:高級 API、近線性的可伸縮性、開源許可、在商用硬件上運行的本領,以及容錯。它已得到數百(或者已達數千)個公司的樂成陳設,是大局限漫衍式存儲和處理懲罰的最新尺度。
一些早期的 Hadoop 回收者,好比 Yahoo! 和 Facebook,構建了包括 4,000 個節點的大型集群,以滿意不絕增長和變革的數據處理懲罰需求。可是,在構建本身的集群后,他們開始留意到了 Hadoop MapReduce 框架的一些范圍性。
經典 MapReduce 的范圍性
經典 MapReduce 的最嚴重的限制主要干系到可伸縮性、資源操作和對與 MapReduce 差異的事情負載的支持。在 MapReduce 框架中,功課執行受兩種范例的歷程節制:
一個稱為 JobTracker 的主要歷程,它協調在集群上運行的所有功課,分派要在 TaskTracker 上運行的 map 和 reduce 任務。
很多稱為 TaskTracker 的下級歷程,它們運行分派的任務并按期向 JobTracker 陳訴進度。
Apache Hadoop 的經典版本 (MRv1)
該圖顯示了 Apache Hadoop 的經典版本 (MRv1)
大型的 Hadoop 集群顯現出了由單個 JobTracker 導致的可伸縮性瓶頸。依據 Yahoo!,在集群中有 5,000 個節點和 40,000 個任務同時運行時,這樣一種設計實際上就會受到限制。由于此限制,必需建設和維護更小的、成果更差的集群。
另外,較小和較大的 Hadoop 集群都從未最高效地利用他們的計較資源。在 Hadoop MapReduce 中,每個從屬節點上的計較資源由集群打點員解析為牢靠命量的 map 和 reduce slot,這些 slot 不行替代。設定 map slot 和 reduce slot 的數量后,節點在任何時刻都不能運行比 map slot 更多的 map 任務,縱然沒有 reduce 任務在運行。這影響了集群的操作率,因為在所有 map slot 都被利用(并且我們還需要更多)時,我們無法利用任何 reduce slot,縱然它們可用,反之亦然。
最后但同樣重要的是,Hadoop 設計為僅運行 MapReduce 功課。跟著替代性的編程模子(好比 Apache Giraph 所提供的圖形處理懲罰)的到來,除 MapReduce 外,越來越需要為可通過高效的、公正的方法在同一個集群上運行并共享資源的其他編程模子提供支持。
2010 年,Yahoo! 的工程師開始研究一種全新的 Hadoop 架構,用這種架構來辦理上述所有限制并增加多種附加成果。
辦理可伸縮性問題
在 Hadoop MapReduce 中,JobTracker 具有兩種差異的職責: