`
wujun8
  • 浏览: 11921 次
  • 性别: Icon_minigender_1
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

yarn fair scheduler 之概述

 
阅读更多
所有的调度器都是基于事件模型,需要处理的一个重要事件是nodeUpdate,处理各个节点的心跳。
对于公平调度器,在处理某一Node心跳事件时,先处理刚刚启动的Container和已完成任务的Container,更新集群资源情况,并尝试在当前Node上分配资源。这时就涉及选择哪一个队列中的哪一个APP的问题,实际上是利用公平排序算法将队列排序后,再对队列内部的APP排序确定一个APP参与这一次分配。如果当前Node不能满足要求,继而尝试下一个Node,所有Node不满足等待下次心跳事件。
上面没有说到资源的抢占,因为资源抢占是另一个独立的线程定时检查集群中所有队列的资源使用情况并根据队列配置决定抢占哪一个队列的资源(公平份额计算算法),再具体到某一个Container(按优先级从小到大和启动时间从大到小排序),先警告Container应该释放资源,超时(默认15秒)后通知APPMaster强制杀死该Container,然后释放资源回到集群中被再分配。所以说,其实资源抢占其实就是kill的策略。
那么上面提到两个算法,公平排序公平份额算法,还有一个抢占模型

结合前面两个的分析,对于队列的配置,最小份额是决定调度顺序的优先因素,当队列的资源使用量超过 min(资源需求量,最小份额) 后,就看队列的权值。
最小份额对公平排序过程影响较大,影响调度顺序;权值对公平份额的计算影响较大,继而影响抢占模型。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics