YARN中资源调度器的那些事儿,接上次Yarn的那些事儿,来扯一下调度器...
YARN三种资源调度器
理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在Yarn中,负责给应用分配资源的就是Scheduler。其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。为此,Yarn提供了多种调度器和可配置的策略供我们选择。
在Yarn中有三种调度器可以选择:FIFO Scheduler ,Capacity Scheduler,FairS cheduler。
FIFO Scheduler
把应用按提交的顺序排成一个先进先出队列,缺点是大的应用可能会占用所有集群资源,这就导致其它应用被阻塞。
Capacity Scheduler-容量调度
把资源划分为多个队列,队列还可以有子队列。
弹性队列(queue elasticity): 支持占用其他空闲队列资源。
Fair Scheduler-公平调度
目的是为所有的应用分配公平的资源,右下角图图从第二个任务提交到获得资源会有一定的延迟,因为他需要等待第一个任务释放占用的Container。小任务执行完成之后也会释放自己占领的资源,大任务又获得了全部系统资源。最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。
Fair支持多队列,假设有两个用户A和B,他们分别拥有一个队列。当A启动一个job而B没有任务时,A会获得全部集群资源;当B启动一个job后,A的job会继续运行,不过一会儿之后两个任