Hadoop作業(yè)調(diào)度器主要有三種:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.x默認的資源調(diào)度器是Capacity Scheduler。
具體設置詳見:yarn-default.xml文件
<property>
<description>The class to use as the resource scheduler.</description>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
Yarn之先進先出(FIFO)調(diào)度器
FIFO Scheduler 把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足后再給下一個分配,以此類推。
FIFO Scheduler 是最簡單也是最容易理解的調(diào)度器,也不需要任何配置,但它并不適用于共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合采用 Capacity Scheduler 或 Fair Scheduler,這兩個調(diào)度器都允許大任務和小任務在提交的同時獲得一定的系統(tǒng)資源。
Yarn之容量(Capacity )調(diào)度器
Capacity 調(diào)度器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能
力。通過為每個組織分配專門的隊列,然后再為每個隊列分配一定的集群資源,這樣整個集群就可以通過設置多個隊列的方式給多個組織提供服務了。除此之外,隊列內(nèi)部又可以垂直劃分,這樣一個組織內(nèi)部的多個成員就可以共享這個隊列資源了,在一個隊列內(nèi)部,資源的調(diào)度是采用的是先進先出(FIFO)策略。
Yarn之公平(Fair)調(diào)度器
在 Fair 調(diào)度器中,我們不需要預先占用一定的系統(tǒng)資源,F(xiàn)air 調(diào)度器會為所有運行的job 動態(tài)的調(diào)整系統(tǒng)資源。如下圖所示,當?shù)谝粋€大 job 提交時,只有這一個 job 在運行,此時它獲得了所有集群資源;當?shù)诙€小任務提交后,F(xiàn)air 調(diào)度器會分配一半資源給這個小任務,讓這兩個任務公平的共享集群資源。
需要注意的是,在 Fair 調(diào)度器中,從第二個任務提交到獲得資源會有一定的延
遲,因為它需要等待第一個任務釋放占用的 Container。小任務執(zhí)行完成之后也會釋放自己占用的資源,大任務又獲得了全部的系統(tǒng)資源。最終效果就是 Fair 調(diào)度器即得到了高的資源利用率又能保證小任務及時完成。
Attention Please--文章來自互聯(lián)網(wǎng)資料整理,如有雷同,純屬李小李抄襲,如有侵權(quán)請聯(lián)系刪除 From 李小李