一、概述
公平调度器可以为所有的应用“平均公平”分配资源,当然,这种“公平”是可以配置的,称为权重,可以在分配文件中为每一个队列设置分配资源的权重,如果没有设置,默认是1(由于默认权重相同,因此,在不做配置的情况下,作业(队列)之间的资源占比相同)。
默认地,所有的应用程序在一段时间内平均获得相等的资源份额;
默认地,公平调度程序仅基于内存调度公平决策,当然,这种策略也是支持配置的。
其策略如下图所示:
紫色区域代表任务A, 绿色区域代表任务B,当只有一个应用程序(A)在运行时,该应用程序将使用整个集群的资源(0 ~ t1时间段)。当提交其他应用程序时(t1时刻),A释放的资源被分配给新应用程序,因此每个应用程序最终得到的资源大致相同(在默认情况下)。当任务B执行完后(t2时刻),B所占用的资源又会被A使用,此后A又将完全占用集群资源直至任务结束。
相比较容量调度器,公平调度器并不会为某个队列预留资源,调度器会在所有正在运行的作业之间动态平衡集群资源。公平调度器的这种机制不光实现应用之间的公平分配资源,也可以实现在多队列之间,因为公平调度器也支持多层级队列。但是公平规则只限于同级队列。