1. 程式人生 > >Yarn架構基本概況(二)

Yarn架構基本概況(二)

匯報 storm 資源 ger 計算 yar 代理 這樣的 共享

在概況()中,主要簡單的對Yarn的情況作了簡單的介紹,今天花一定時間在某些詳細的模塊上呈現下面Yarn的總體情況。幫助大家更好的理解Yarn

1)ResourceManager

Yarn的總體架構中。他用的也是Master/Slave架構,他的SlaveNodeManagerRMYarn中扮演著一個很重要的角色。他是負責集群中全部資源的統一管理和分配的。

他依據各個NM的資源匯報信息。把這些信息依照一定策略分配各個應用程序。以下是ResourceManager的主要內部結構:

(1).用戶交互模塊

(2).NM管理模塊

(3).AM管理模塊
(4).Application應用管理模塊
(5).安全管理模塊
(6).資源分配模塊
(7).狀態機管理模塊。ResourceManager使用有限狀態機來維護狀態的生命周期的。比方RMApp應用狀態機,RMConta容器狀態機。

1.ResourceManager事件處理

Yarn廣泛採用了事件驅動的機制。由1個中心事件分發器,對於傳進來的事件做轉發處理。大大的提高了效率。

2)資源調度模型

MRV1中,資源調度默認採用的是簡單的FIFO的方式,可是在需求日益多元化的條件下,這樣的方式一件漸漸的沒有那麽完美了,於是適用於多用戶的資源調度器就出現了。

主要2種設計思路。

(1).在同個集群中虛擬多個Hadoop集群,這些Hadoop

集群擁有全套的Hadoop服務。典型的代表HOD(Hadoop On Demand)調度器。

(2).資源調度器以多用戶多隊列的形式實現。每一個隊列僅僅要每一個隊列執行著類似的用戶群,每一個隊列裏有自己分配的資源和任務。可是他們是共享一整套Hadoop的資源的。

3)NodeManager

NMYarn上單個節點上的代理。

他有例如以下的作用

1.與ResourceManager通信
2.管理Contain容器的的生命周期
3.監控Contain的資源使用情況
4.管理節點健康狀況
5.管理日誌服務

RM一樣,NM也採用了事件驅動的形式來控制整個過程。有很多的事件類型經過事件處理器處理後會改變對象的狀態機,進而改變了對象的聲明周期。

3)在Yarn上執行多種計算框架

Yarn是一一個通用的資源管理框架,在上面執行多種計算框架才是啊他的最大的不同MRV1的地方。作為一個資源框架,有2樣東西你必需要重寫一個提交應用的Client,另一個是與待接入框架相適應的ApplicationMaster,後者的設計尤其是關鍵。由於提交程序的Client都差點兒相同的。

1.MRV1主要是通過JobTrackerTaskTracker實現的,所以他在Yarn的部署能夠是以下這幅圖的樣子。

技術分享

2.Storm,實時處理框架在Yarn是怎麽執行的呢。StormMRV1還是很類似的。通過Nimbus,Supervisor,中間加個zookeeper做協調服務就能實現了。模擬圖例如以下。

技術分享

當然以上還都是設計思路,終於還是通過自己實現client和自己定義的ApplicationMaster實現終於的設計。

4)Yarn的未來

在近期幾年。也衍生出了一些類似於Yarn的通用計算框架,比方Apache Mesos,他相同能夠支持MapReduceStorm,在某些特性上和Yarn還是有些不同的。

只是這個框架還不是特別穩定眼下。

作為通用的計算框架,在Yarn的身上,還是有些缺點的。比方由於執行在Yarn上的計算框架是資源隔離的, 所以各個框架是不知道集群的總體資源執行情況的,就不好進行總體資源的調度。各個計算是框架不知道當在節點很繁忙的時候是應該等待自己的任務執行完了在繼續以下的任務。還是向系統請求新的資源,假設系統此時也很忙,顯然不適合請求,反而要等更長時間。假設系統資源此時很空。那這就是正確的策略。

Yarn架構基本概況(二)