Clouder Manager: Yarn Fair scheduler config

队列的层次是通过嵌套<queue>元素实现的。

所有的队列都是root队列的孩子,即使我们没有配到<root>元素里。

在这个配置中,我们把root队列有分成了hdfs,spark和default三个队列。

每个队列内部仍可以有不同的调度策略。

队列的默认调度策略可以通过顶级元素<defaultQueueSchedulingPolicy>进行配置,如果没有配置,默认采用公平调度。

1.minResources :最少资源保证量,设置格式为“X mb, Y vcores”,当一个队列的最少资源保证量未满足时,

它将优先于其他同级队列获得资源,对于不同的调度策略(后面会详细介绍),最少资源保证量的含义不同,对于fair策略,则只考虑内存资源,

即如果一个队列使用的内存资源超过了它的最少资源量,则认为它已得到了满足;对于drf策略,则考虑主资源使用的资源量,

即如果一个队列的主资源量超过它的最少资源量,则认为它已得到了满足。

2.maxResources:最多可以使用的资源量,fair scheduler会保证每个队列使用的资源量不会超过该队列的最多可使用资源量。

3.maxRunningApps:最多同时运行的应用程序数目。通过限制该数目,可防止超量Map Task同时运行时产生的中间输出结果撑爆磁盘。

4.weight:队列间的权重值,当队列中有任务等待,并且集群中有空闲资源时候,每个队列可以根据权重获得不同比例的集群空闲资源。

5.schedulingPolicy:队列采用的调度模式,可以是fifo、fair或者drf。

6.aclSubmitApps:可向队列中提交应用程序的Linux用户或用户组列表,默认情况下为“*”,表示任何用户均可以向该队列提交应用程序。

需要注意的是,该属性具有继承性,即子队列的列表会继承父队列的列表。配置该属性时,用户之间或用户组之间用“,”分割,

用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。

7.aclAdministerApps:该队列的管理员列表。一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序。

8.minSharePreemptionTimeout:最小共享量抢占时间。如果一个资源池在该时间内使用的资源量一直低于最小资源量,则开始抢占其他队列的资源


1.User elements:为单个用户添加maxRunningApps属性限制其最多同时运行的应用程序数目

2.userMaxAppsDefault elements:其他用户最多同时运行的app数目的默认值

3.fairSharePreemptionTimeout elements:公平共享量抢占时间,如果一个队列在该时间内使用资源量一直低于公平共享量的一半

(这个比例可以配置,通过defaultFairSharePreemptionThreshold来配置默认比例,fairSharePreemptionThreshold配置该队列比例),

则开始抢占该队列的资源。

4.defaultMinSharePreemptionTimeout elements:队列的minSharePreemptionTimeout属性的默认值。

5.queueMaxAppsDefault elements:队列的maxRunningApps属性的默认值,会被队列的maxRunningApps属性覆盖。

6.defaultQueueSchedulingPolicy elements:队列的schedulingPolicy属性的默认值。

7.queuePlacementPolicy elements:基于规则来确定应用应该放到哪个队列,<queuePlacementPolicy> 元素定义了一个规则列表,

其中的每个规则会被逐个尝试直到匹配成功,至于它的规则官网上有写,这里就不写了。


配置如下:

<?xml version="1.0"?>
<allocations>
 
	<queue name="root">
		<defaultQueueSchedulingPolicy>drf</defaultQueueSchedulingPolicy>
		<schedulingPolicy>drf</schedulingPolicy>

		<queue name="hdfs">
		  <minResources>0 mb,0 vcores </minResources>
			  <maxResources>308020 mb,124 vcores </maxResources>
			  <maxRunningApps>100</maxRunningApps>
			  <minSharePreemptionTimeout>300</minSharePreemptionTimeout>
			  <weight>1.0</weight>
		</queue>
		
		<queue name="spark">
		  <minResources>0 mb,0 vcores </minResources>
		  <maxResources>154000 mb,128 vcores </maxResources>
		  <maxRunningApps>200</maxRunningApps>
		  <minSharePreemptionTimeout>300</minSharePreemptionTimeout>
		  <weight>4.0</weight>
			<aclSubmitApps> long</aclSubmitApps>
			<aclAdministerApps> long</aclAdministerApps>
		</queue>

		<queue name="default">
		  <minResources>0 mb,0 vcores </minResources>
		  <maxResources>308020 mb,124 vcores </maxResources>
		  <maxRunningApps>100</maxRunningApps>
		  <minSharePreemptionTimeout>300</minSharePreemptionTimeout>
		  <weight>1.0</weight>
		</queue>

	</queue>
 
</allocations>


说明: 此处只设置了一个资源池,但是有三个队列,限制了各个队列的大小,防止某个大任务占据了整个集群的资源,当有重要任务提交的时候,申请不到资源。


注意:

设置完成这些还是不够的,当用户通过指定队列启动作业,如果队列不存在,可以通过scheduler自动创建队列,可以进行进一步对
yarn.scheduler.fair.allow-undeclared-pools配置禁止scheduler自动创建队列。


参考

https://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/FairScheduler.html#Configuration

http://www.mamicode.com/info-detail-1097801.html

http://blog.csdn.net/LW_GHY/article/details/51737882


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mtj66

看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值