三、hadoop 2.x

weixin_34320159發表於2018-05-08

一、YARN

3951014-2ef5ee2cbbe28b06.png
image.png

YARN系統由以下幾個組成部分:
容器(container)

容器(container)是YARN中的計算單元,一部分cpu核心和一部分記憶體構成一個容器。相當於MapReduceV1的一個任務(task)執行器。
任何任務或者程式(單個任務或者多個任務組成的有向無環圖)都執行在一個或者多個容器中。
叢集節點與容器之間的關係:一個節點可以執行多個容器,但一個容器只能執行在一個節點上。在YARN框架中全權負責分配容器的元件叫做節點管理器。

節點管理器(Node Manager)

節點管理器(Node Manager)執行在叢集中的一個節點上,叢集中每個節點都執行著自己的節點管理器。
節點管理器作為一個從屬服務,它接受資源管理器的請求,然後分配容器給應用程式。它還負責監控和彙報資源使用情況給資源管理器。
在Hadoop叢集中,節點管理器和資源管理器一起協同工作,負責管理分配Hadoop系統資源。資源管理器是一個Hadoop叢集的全域性元件,節點管理器作為各個節點的代理來負責管理叢集中每個節點的健康情況,管理每個已啟動容器的整個生命週期。這種職責分離使得資源管理器相比傳統的作業排程器(JobScheduler)具備更好的系統擴充套件性。
另外,節點管理器還執行各種YARN應用程式使用的輔助程式(auxiliary service)。比如,在hadoop 2.0實現中,MapReduce程式中Shuffle服務就是一個輔助服務。

全域性資源管理器(Global Resource Manager)

資源管理器,在上文已經介紹,它和節點管理器一起協同工作,負責管理分配Hadoop系統資源。
資源管理器的核心是一個排程器:當多個應用程式競爭使用叢集資源的時候,它來負責資源的分配排程,確保資源的優化合理使用。
排程器按照程式佇列和叢集的處理能力,負責為正在執行的多個應用程式分配其所需的叢集資源。Hadoop自帶計算能力排程器和公平排程器。

應用程式管理器(Application Master)

應用程式管理器是YARN與老的MapReduceV1框架之間的關鍵區別。
應用程式管理器是一個特定的框架函式庫(framework-specific library)例項,它同資源管理器協調溝通資源,並通過節點管理器來獲取這些系統資源,然後執行任務。
這樣設計的應用程式管理器可以提高可擴充套件性和框架通用性,使用不同的應用程式管理器來管理基於不同設計思想的計算框架,使得多種計算框架可以共存於一個統一的管理系統中。
Hadoop系統現在不僅支援MapReduce型別的計算,它變得更加外掛化:如果系統要增加某種型別的計算框架,就開發一種對應的程式管理器,並把這個程式管理器以外掛的形式整合到hadoop系統之中。

二、YARN請求步驟

主要分為兩大步:首先,分配容器,啟動應用程式管理器,為程式作業做準備;然後由應用程式管理器請求容器,執行程式作業。詳細如下:


3951014-94500024d7eb50ab.png
應用程式管理器啟動
3951014-b7ce4238ed53f62c.png
給作業分配資源並執行作業

三、HDFS的高可用性

在Hadoop1.x中,名稱節點會引發系統單點故障。而在Hadoop2.x中,引入了高可用名稱節點概念。核心思想是使用兩個相同的名稱節點:一個處於活動模式,一個處於待機模式。處於活動模式的名稱節點未系統提供服務,處於待機模式的名稱節點需要實時同步活動名稱節點的資料。一旦活動名稱節點當機,系統進行快速的故障切換。
在當前設計中,兩個名稱節點共享同一個儲存裝置。活動名稱節點的任何修改都會記錄到共享儲存中的edits日誌檔案。待機名稱節點將這些修改應用到自己的名稱空間中。一旦活動名稱節點故障,待機名稱節點會確保edits檔案中的所有資料都被應用。


3951014-2a4ac9f7beaafc20.png
image.png

相關文章