會先對所有的jobs做sort再去挑選哪個job可以assign task,
而在sort中的任兩個elements 比較用的comparator程式碼小複雜, 概念簡述如下:
1. 先比較誰有滿足minshare
a. 滿足的, 相對assign的優先權較低
b. 若兩者皆不滿足 --> 誰的越接近滿足minshare比例的, 相對assign的優先權較低
c. 若兩者皆已滿足minshare --> 誰的weight值越小, 相對assign的優先權較低
2. 若以上都相等, 比較 start time(再不簡述行就比job name)
註:
當 c. 中兩者weight都一樣時, 就是比兩者目前的running tasks數,在此也就是Hadoop提出之fair scheduler的想法:
1. 先滿足min share
2. 再滿足fair share
[Reference]
Hadoop-0.21.0公平调度器算法分析