目前,Hadoop作業(yè)調(diào)度器主要有三種, 分別是:FIFO,Capacity Schedule(容量調(diào)度器),F(xiàn)air Schedule(公平調(diào)度器)。
Hadoop2.7.2默認的資源調(diào)度器是Capacity Scheduler。
具體設(shè)置詳見: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>
-
先進先出調(diào)度器(FIFO),按照到達時間先到服務(wù)。
FIFO調(diào)度器.jpg -
Capacity Schedule(容量調(diào)度器)
容量調(diào)度器.jpg
- 支持多個隊列,每個隊列可配置一定的資源量,每個隊列采用FIFO調(diào)度策略。
- 為了防止同一個用戶的作業(yè)獨占隊列中的資源,該調(diào)度器會對同一用戶提交的作業(yè)所占資源量進行限定。
- 首先,計算每個隊列中正在運行任務(wù)數(shù)與其應(yīng)該分得的計算資源之間的比值,選擇一個比值最小的隊列(最閑的隊列)。
- 其次,按照作業(yè)的優(yōu)先級和提交時間順序,同時考慮用戶資源限制和內(nèi)存限制對隊列內(nèi)任務(wù)排序。
- 三個隊列同時按照任務(wù)的先后順序一次執(zhí)行,比如,job11,job21和job31分別排在隊列的最前面,先運行,也是并行運行。
-
Fair Schedule(公平調(diào)度器),按照缺額排序,缺額大的優(yōu)先。
公平調(diào)度器.jpg
- 支持多隊列多用戶,每個隊列中的資源可以配置,同一隊列中的作業(yè)公平共享隊列中所有的資源,比如有三個隊列,每個隊列中的job按照優(yōu)先級分配資源,優(yōu)先級越高分配的資源越多,但是每個job都會分配到資源以確保公平。
- 在資源有限的情況下,每個job理想情況下獲得的計算資源與實際獲得的計算資源存在一種差距,這個差距就叫做缺額。
- 在同一個隊列中,job的資源缺額越大,越先獲得資源優(yōu)先執(zhí)行。作業(yè)是按照缺額的高低來先后執(zhí)行的,而且可以看上圖有多個作業(yè)同時運行。


