公平调度程序策略 - FAIR

Fair Scheduler policies - FAIR

我目前正在尝试了解 cloudera 集群内的资源分配。在我们的组织中,我们使用 FairScheduler (https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html),我不确定我是否正确理解了 FAIR 政策。

总结一下我到目前为止的理解。

FIFO:每个作业都获得它需要的所有资源,因为所有资源都已分配。从这一点开始,应用程序必须等待空闲资源,并将按照它们到达时的相同顺序执行。

公平:每个作业都能公平地分配资源。如果只有 1 个作业到达,它会获得所有可用资源。如果有 2 个作业到达,每个作业获得 1/2 的资源。

但是如果作业 1 只需要 25% 而作业 2 需要 75%,会发生什么情况?这会是一个问题吗(1 得到 25% 但 2 得到 50%)?或者这会以最大-最小公平性来解决吗?

DRF:寻求最大化系统中最小的主导份额,然后是第二小的,依此类推。 (我知道它更复杂,但我的问题更多地与 FAIR 政策有关)

您的示例并没有真正引起争论,因此无法真正说明 FIFO 和 FAIR 之间的区别。调度程序策略只有在资源请求超过现有容量(资源争用)时才真正发挥作用。 (所以你的 %75 和 %25 的例子会 运行 原样,不会有问题。你不会看到 FIFO 和 FAIR 之间的处理差异)

当第三个作业提交到同一个队列时,即策略将尝试强制执行 %33 的“公平资源配置”。 yarn 执行策略的积极程度及其对作业的影响取决于您的设置,但会努力重新分配资源 'fairly'.

This video有助于说明这个主题,值得一看。

Here's another post (I didn't create) 这也很好地解释了不同的调度策略。