【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版本的默认调度器;

调度器参数高度灵活可配置,详细可点击以上链接参照官网配置。

 

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