Fair Scheduler Queue Basics

示例:具有正在Running的应用程序的集群

假设我们有一个yarn集群,其总资源<内存:800GB,vcores 200>,有两个队列:root.busy(权重=1.0)和root.sometimes_busy(权重3.0)。通常有四种的场景:

场景A:root.busy队列applications序占满队列,root.sometimes_busy队列中有少量正在运行的applications(例如10%,即<memory:80GB,vcores:20>)。很快,大量applications在相对较短的时间窗口内添加到root.sometimes_busy的队列中。所有sometimes_busy队列中的新应用程序都将处于挂起状态,并在root.busy队列中container结束时变为active状态。如果root.busy队列中的任务相当短暂,则root.sometimes_busy队列中的应用程序将不会等待很长时间来分配容器。但是,如果root.busy队列中的任务需要很长时间才能完成,则root.sometimes_busy队列中的新应用程序将长时间处于挂起状态。在这两种情况下,由于root.sometimes_busy队列中的应用程序处于活动状态,root.busy队列中许多正在运行的应用程序将需要更长的时间才能完成。

场景B:root.busy队列和root.sometimes_busy队列都已满或接近满,都是活动和/或挂起的applications。在这种情况下,集群将保持充分利用。每个队列将使用其fair share,root.busy队列中的所有应用程序的总和使用集群资源的25%,root.sometimes_busy队列中的所有应用程序的总和使用剩余的75%。

那么,如何避免场景A呢?

一种解决方案是在root.busy队列上设置maxResources。假设在root.busy队列上将maxResources属性设置为集群的25%。由于maxResources是一个硬限制,root.busy队列中的应用程序将始终限制在总数的25%。因此,在可以使用100%集群的情况下,集群利用率实际上接近35%(root.sometimes_busy队列为10%,root.busy队列为25%)。

场景A将有显著的改进,因为集群上有空闲资源,这些资源只能用于root.sometimes_busy队列中的应用程序,但平均集群利用率可能较低

更多公平分享定义

  • Steady FairShare:队列的理论公平共享值。该值是根据集群大小和集群中队列的权重计算的。

  • Instantaneous FairShare:调度程序为集群中的每个队列计算的公平共享值。
    该值在两个方面不同于Steady FairShare:
    – 未为空队列分配任何资源。
    – 该值等于所有队列达到或超过容量时的Steady FairShare。

  • Allocation:等于队列中所有正在运行的应用程序使用的资源之和。

展望未来,我们将“Instantaneous FairShare ”简称为“FairShare”

The Case for Preemption

根据这些新的定义,前面的场景可以表述如下:

情景A

root.sometimes_busy队列的Allocations value为<memory:80GB,vcores:20>,FairShare value为<memory:600GB,vcores:150>。

root.busy队列的Allocations value为<memory:720GB,vcores:180>,FairShare value为<memory:200GB,vcores:50>。

情景B

两个队列的Instantaneous FairShare等于其稳定公平份额。

在场景A中,您可以看到两个队列的分配和Steady FairShare之间的不平衡。当容器从root.busy队列中释放并分配给root.sometimes_busy的队列时,资源将缓慢返回。

通过启用抢占,公平调度程序可以杀死繁忙队列中的容器,并更快地将它们分配到root.sometimes_busy的队列。

Configuring Fair Scheduler for Preemption

要启用抢占,请在yarn-site.xml中设置此属性:

<property>yarn.scheduler.fair.preemption</property>
<value>true</value>

然后,在FairScheduler分配文件中,可以通过fairSharePreemptionThresholdfairSharePreemptionTimeout在队列上配置抢占,如下例所示。fairSharePreemptionTimeout是队列在尝试抢占容器以从其他队列获取资源之前处于FairSharePreemptionReshold下的秒数

<allocations>
  <queue name="busy">
    <weight>1.0</weight>
  </queue>
  <queue name="sometimes_busy">
    <weight>3.0</weight>
    <fairSharePreemptionThreshold>0.50</fairSharePreemptionThreshold>
    <fairSharePreemptionTimeout>60</fairSharePreemptionTimeout>
  </queue>

 <queuePlacementPolicy>
    <rule name="specified" />
    <rule name=”reject” />
 </queuePlacementPolicy>
</allocations>

回想一下,root.sometimes_busy队列的FairShare是<memory:600GB,vcores:150>。这两个新属性告诉FairScheduler,root.sometimes_busy的队列将在开始抢占之前等待60秒。如果在这段时间内,FairScheduler没有收到50%的FairShare资源,FairScheduler可以开始杀死root.busy队列中的容器,并将它们分配到root.sometimes_busy的队列中。

需要注意的是:

fairSharePreemptionThreshold的值应大于0.0(设置为0.0类似于关闭抢占),但不大于1.0(因为1.0将向需要资源的队列返回所有的FairShare)。

此配置中的抢占将杀死root.busy队列中的容器,并将它们分配到sometimes_busy队列。
反向抢占不会发生,因为在root.busy队列上没有设置抢占属性。

抢占不会杀死sometimes_busy队列中应用程序A的容器,并将它们分配给sometimes_busy队列中的应用程序B。

如果未为给定队列或其parent队列之一设置fairSharePreemptionTimeout,并且未设置defaultFairSharePreemptionTimeout,则即使启用了抢占,此队列也不会进行抢占。

(注意:我们不会讨论队列上的minResourcesMinsharePremptionTimeout。目前建议使用FairShare抢占。)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容