希望多多指导,qq 86497564 。

© 天行自息
Powered by LOFTER

yarn中的调度

在yarn中有三种调度器可以选择:FIFO Scheduler,Capacity Scheduler,Fair Scheduler。

FIFO Scheduler 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推. FIFO Scheduler 是最简单的也是最容易理解的调度器,也不需要任何配置,但它并不适用于共享集群。大的应用可能会占用所有集群资源,这就导致其他应用被阻塞。

    而对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO 调度器时的时间。

    在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器回为所有运行的job动态的调整系统资源。如下图所示:当第一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair调度器会分配一般资源给这个小任务,让这两个小任务公平的共享集群资源。需要注意的是,在下图fair调度器中,从第二个任务提交获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的Container。小任务执行完成后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。

    抢占当一个job提交到一个繁忙集群中的空队列时,job并不会马上执行,而是阻塞直到正在运行的job释放系统资源,为了使提交job的执行时间更具预测性(可以设置等待的超时时间),Fair调度器支持抢占,抢占就是允许调度器杀掉占用超过其应占份额资源队列的containers,这些cintainers资源便可被分配到应该享有这些份额资源的队列中,需要注意抢占会降低集群的执行效率,因为被终止的containers需要被重新执行。

评论
热度 ( 2 )