Hadoop和Yarn中的任务调度算法和任务队列

参考:
Yarn 资源调度策略
hadoop的三种任务调度的原理
1 Yarn 资源调度策略 1)队列调度:FIFO Scheduler

FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。
缺点:FIFO Scheduler它并不适用于共享集群。大的应用可能会占用所有集群资源,这就导致其它应用被阻塞。
2)容量调度:Capacity Scheduler
Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。
Capacity 调度器允许多个组织共享整个集群,每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。除此之外,队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。
当队列已满,Capacity调度器不会强制释放Container,当一个队列资源不够用时,这个队列只能获得其它队列释放后的Container资源,这个称为“弹性队列”,也可以设置最大值,防止过多占用其他队列的资源。 (超用资源)
3)公平调度:Fair Scheduler
Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源。
【Hadoop和Yarn中的任务调度算法和任务队列】最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。

    推荐阅读