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


APASRA Clouder基础技能认证中,实现调用API接口是其中一项重要的技能。API(Application Programming Interface)接口允许不同的软件系统进行交互和通信。 在实现调用API接口的过程中,首先需要了解目标API的文档和使用说明。文档通常会提供API的基本信息、请求格式、参数要求、返回数据等具体内容。根据文档中提供的信息,我们可以编写接口调用的代码。 使用API接口的第一步是进行身份认证和授权。根据API提供的认证方式,我们可能需要使用API密钥、令牌等认证信息来获取身份验证。一般情况下,我们可以通过在请求头或请求参数中添加认证信息来进行身份认证。 接下来,我们可以根据API的要求构建请求参数。根据API文档提供的要求,我们可以设置不同的请求参数,例如请求类型(GET、POST)、URL地址、请求体内容、查询参数等。在构建请求参数时,我们需要确保参数的准确性和完整性。 完成请求参数的构建后,我们可以使用编程语言中的HTTP库或者API调用工具进行请求发送。在发送请求之前,我们需要根据API文档提供的URL地址和请求方法进行配置。通过发送HTTP请求,我们可以将请求参数发送给API服务器。 一旦服务器接收到请求,它会根据请求参数进行处理并返回响应数据。我们可以检查响应状态码来判断请求的处理状态。根据API文档提供的响应格式,我们可以提取需要的数据并进行处理。 最后,我们需要对调用API接口的过程进行错误处理和异常处理。在实际使用中,我们可能会遇到网络连接失败、请求超时、权限认证错误等问题。针对这些问题,我们可以使用异常处理机制来捕获和处理错误,确保接口调用的稳定性和可靠性。 总之,通过了解API文档、身份认证、构建请求参数、发送请求、处理响应以及错误处理等步骤,我们可以实现调用API接口。这是实现APASRA Clouder基础技能认证中的一项重要能力。对于开发者来说,掌握API调用技巧将有助于更好地与不同系统进行交互和实现功能扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mtj66

看心情

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

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

打赏作者

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

抵扣说明:

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

余额充值