首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Yarn调度队列

    在Yarn中,负责给应用分配资源的是Scheduler,并提供了多种调度器和可配置的策略供选择。 在Yarn中有是三种调度器可以选择:FIFO Scheduler,Capacity Scheduler,Fair Scheduler。 FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。 FIFO Scheduler是最简单也是最容易理解的调度器,不需要任何配置,但其不适用于共享集群。大的应用可能会占用所有集群资源,这就导致其它应用被阻塞。在共享集群中,更适合采用Capacity Scheduler或Fair Scheduler,这两种调度器都允许大任务和小任务在提交的同时获得一定的资源。 下面Yarn调度器对比图展示了这几个调度器的区别,从图中可以看出,在FIFO调度器中,小任务会被大任务阻塞。 而对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。 在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源。如下图所示,当第一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。 需要注意的是,在下图Fair调度器中,从第二个任务提交到获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的Container。小任务执行完成以后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是Fair调度器既得到了高资源的利用率又能保证小任务的及时执行。

    02
    领券