目前,Hadoop 作業調度器主要有三種:
- FIFO
- 容量調度器(Capacity Scheduler, Apache Hadoop2.7.2 默認的資源調度器)
- 公平調度器(Fair Scheduler, CDH框架默認的資源調度器)
默認調度器可見配置文件
// Apache hadoop3.1.3 yarn=default.xml文件
// http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/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>
一、FIFO
如果只有三個task的資源,會先給job1的一部分map task,剩余的map task繼續等。
二、容量調度器(Capacity Scheduler)
Capacity Scheduler 是 Yahoo 開發的多用戶調度器。
1、多隊列:每個隊列可配置一定的資源量,每個隊列采用FIFO調度策略。
2、容量保證:管理員可為每個隊列設置資源最低保證和資源使用上限。
3、靈活性:如果一個隊列中的資源有剩余,可以暫時共享給那些需要資源的隊列,而一旦該隊列有新的應用程序提交,則其他隊列借調的資源會歸還給該隊列。
4、多租戶(ss、cls):
支持多用戶共享集群和多應用程序同時運行。
為了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。
三、公平調度器(Fair Scheduler)
Fair Schedulere 是 Facebook 開發的多用戶調度器。
1)與容量調度器相同點
(1)多隊列:支持多隊列多作業
(2)容量保證:管理員可為每個隊列設置資源最低保證和資源使用上線
(3)靈活性:如果一個隊列中的資源有剩余,可以暫時共享給那些需要資源的隊列,而一旦該隊列有新的應用程序提交,則其他隊列借調的資源會歸還給該隊列。
(4)多租戶:支持多用戶共享集群和多應用程序同時運行;為了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。
2)與容量調度器不同點
(1)核心調度策略不同
容量調度器:優先選擇資源利用率低的隊列
公平調度器:優先選擇對資源的缺額比例大的
(2)每個隊列可以單獨設置資源分配方式
容量調度器:FIFO、 DRF
公平調度器:FIFO、FAIR、DRF
