如果作业的最小共享量(minSlots)大于公平共享量(jobFairShare),则:将最小共享量作为公平共享量赋值给作业。
同时将此作业从集合jobsLeft中删除。
(2)将剩下的slot按权重比例给集合jobsLeft中剩余的作业:
将jobFairShare作为公平共享量赋值给作业。
6) 更新缺额
实际计算时,会分开:
7) 资源分配
当系统中产生一个空闲slot时,将此slot分配给缺额最大的作业。
4、新版hadoop中公平调度器的新特性
(1)增加抢占功能:若某个作业在一定时间间隔内获取的资源(sl0t)总小于minShare/2或者fairShare/2,则从多拿资源的作业那抢占(kill task)。
(2)系统中有多个pool时,每个pool可以配置自己的调度方式:FIFO或者fair schduler(以前强制所有pool的调度方式都一样,是要么是FIFO,要么是Fair scheduler)。
(3)支持delay scheduling(见参考文献[5])。当空闲slot没有locality的task可匹配时,调度器会选择延迟一段时间直到选中一个locality的task或者超时,如果超时(该时间内仍没有locality的task),则分配给非locality的task。
5、参考资料
(1)Fair scheduler论文:M. Zaharia, D. Borthakur, J. S. Sarma, K. Elmeleegy, S. Shenker, and I. Stoica, “Job scheduling for multi-user mapreduce clusters,” EECS Department, University of California, Berkeley, Tech. Rep., Apr 2009. 【下载】
(4)0.21.0版本中fair scheduler设计文档:【下载】
(5)Delay Scheduling: A Simple Technique for Achieving. Locality and Fairness in Cluster Scheduling. Matei Zaharia. University of California, Berkeley,【下载】