【Hadoop2.6】Yarn中任務調度器

概述

Yarn中有三種任務調度器:FIFO調度器(FIFO Scheduler)、容量調度器(Capacity Scheduler)、公平調度器(Fair Scheduler)。

任務調度器介紹

1.FIFO調度器

FIFO調度器將應用放在一個隊列裏,按照“先進先出”的原則爲應用分配資源。

優點:簡單易用,不需要任何配置;

缺點:不適合共享集羣。大應用佔用集羣所有資源,所以每個應用只能排隊等待,即使是秒級完成的應用,這樣不利於集羣的合理利用。

2.容量調度器

https://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

可以通過容量調度器配置多個隊列,並規定好每個隊列的資源佔比,應用在每個隊列內部再遵循FIFO策略。

正常情況下,每個隊列不會搶佔其他隊列的資源,但當自己隊列中資源不能滿足應用的需求,而其他隊列又有空閒資源。此時,容量調度器會把空閒資源分配給應用,即使已經超過應用所在隊列的資源佔比。

容量調度器可以固定每個隊列的資源佔比,使每個隊列不會使用超過本隊列設置的值,也可以採用如上面所說的類似動態分配原則。這要取決於capacity-scheduler.xml的配置信息。

3.公平調度器

https://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

從名稱可以看出,公平調度器是爲了各應用都能公平分配資源。那公平調度器是如何做到的呢,這裏引用《Hadoop權威指南》中的解釋:

想象兩個用戶A和B,分別擁有自己的隊列(見下圖)。A啓動一個作業,在B沒有需求時A會分配到全部可用資源;當A的作業仍在運行時B啓動一個作業,一段時間後,按照我們先前看到的方式,每個作業都用到了一半的集羣資源。這時,如果B啓動第二個作業且其他作業仍在運行,那麼第二個作業將和B的第一個作業共享資源,因此B的每個作業將佔用四分之一的集羣資源,而A扔繼續佔用一半的集羣資源。最終的結果就是資源在用戶之間實現了公平共享。

 

總結

FIFO調度器一般不用;

容器調度器是apache版本的默認調度器;

公平調度器是CDH版本的默認調度器;

調度器參數高度靈活可配置,詳細可點擊以上鍊接參照官網配置。

 

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