我目前正在尝试了解cloudera集群中的资源分配。在我们的组织中,我们使用FairScheduler(https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html)我不确定我是否正确理解FAIR政策。
总结一下我到目前为止所理解的。
FIFO:每个作业都会获得所需的所有资源,因为所有资源都已分配。从这一点开始,应用程序必须等待可用资源,并将按到达时的相同顺序执行。
公平:每个工作都能得到公平的资源份额。如果只有一个作业到达,它将获得所有可用资源。如果到达2个作业,则每个作业将获得1/2的资源。
但是,如果工作1只需要25%,而工作2需要75%,会发生什么呢。这会是个问题吗(1得到25%,2得到50%(?还是用最大-最小公平来解决这个问题?
DRF:寻求最大化系统中最小的主导份额,然后是第二小的,依此类推。(我知道这更复杂,但我的问题更多地与FAIR政策有关(
您的示例并没有真正产生争用,因此也不会真正说明FIFO和FAIR之间的区别。只有当请求的资源超过现有容量(资源争用(时,调度程序策略才会真正发挥作用。(因此,您的示例%75和%25将按原样运行,不会出现问题。您不会看到FIFO和FAIR之间的处理差异(
当第三个作业提交到同一队列时,也就是当策略试图强制执行"作业"时;公平资源";33%。纱线执行政策的力度以及它对工作的影响将取决于您的设置,但需要努力"公平"地重新分配资源。
这段视频有助于说明这个主题,值得一看。
这是另一个帖子(我没有创建(,它也很好地解释了不同的日程安排策略。