Yarn 公平调度器案例

Yarn 公平调度器案例

需求

创建两个队列,分别是 hadoop 和 xiaoqiu(以用户所属组命名)。期望实现以下效果:若用户提交任务时指定队列,则任务提交到指定队列运行;若未指定队列,hadoop 用户提交的任务到 root.group.hadoop 队列运行,xiaoqiu 提交的任务到 root.group.xiaoqiu 队列运行(注:group 为用户所属组)。

公平调度器的配置涉及到两个文件,一个是 yarn-site.xml,另一个是公平调度器队列分配文件 fair-scheduler.xml(文件名可自定义)。

(1)配置文件参考资料:
https://hadoop.apache.org/docs/r3.1.3/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
(2)任务队列放置规则参考资料:
https://blog.cloudera.com/untangling-apache-hadoop-yarn-part-4-fair-scheduler-queue-basics/

配置多队列的公平调度器

1)修改 yarn-site.xml 文件,加入以下参数

<property>
 	<name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
 	<description>配置使用公平调度器</description>
</property>
<property>
 	<name>yarn.scheduler.fair.allocation.file</name>
 	<value>/opt/module/hadoop-3.1.3/etc/hadoop/fair-scheduler.xml</value>
 	<description>指明公平调度器队列分配配置文件</description>
</property>
<property>
 	<name>yarn.scheduler.fair.preemption</name>
 	<value>false</value>
 	<description>禁止队列间资源抢占</description>
</property>

2)配置 fair-scheduler.xml

<?xml version="1.0"?>
<allocations>
 <!-- 单个队列中 Application Master 占用资源的最大比例,取值 0-1 ,企业一般配置 0.1 -->
 <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
 <!-- 单个队列最大资源的默认值 hadoop xiaoqiu default -->
 <queueMaxResourcesDefault>4096mb,4vcores</queueMaxResourcesDefault>
 <!-- 增加一个队列 hadoop -->
 <queue name="hadoop">
 	<!-- 队列最小资源 -->
 	<minResources>2048mb,2vcores</minResources>
 	<!-- 队列最大资源 -->
	 <maxResources>4096mb,4vcores</maxResources>
	 <!-- 队列中最多同时运行的应用数,默认 50,根据线程数配置 -->
 	<maxRunningApps>4</maxRunningApps>
 	<!-- 队列中 Application Master 占用资源的最大比例 -->
 	<maxAMShare>0.5</maxAMShare>
 	<!-- 该队列资源权重,默认值为 1.0 -->
	<weight>1.0</weight>
 	<!-- 队列内部的资源分配策略 -->
 	<schedulingPolicy>fair</schedulingPolicy>
 </queue>
 <!-- 增加一个队列 xiaoqiu -->
 <queue name="xiaoqiu" type="parent">
 	<!-- 队列最小资源 -->
	 <minResources>2048mb,2vcores</minResources>
	 <!-- 队列最大资源 -->
	 <maxResources>4096mb,4vcores</maxResources>
	 <!-- 队列中最多同时运行的应用数,默认 50,根据线程数配置 -->
	 <maxRunningApps>4</maxRunningApps>
 	<!-- 队列中 Application Master 占用资源的最大比例 -->
	 <maxAMShare>0.5</maxAMShare>
	 <!-- 该队列资源权重,默认值为 1.0 -->
	 <weight>1.0</weight>
	 <!-- 队列内部的资源分配策略 -->
	 <schedulingPolicy>fair</schedulingPolicy>
 </queue>
 <!-- 任务队列分配策略,可配置多层规则,从第一个规则开始匹配,直到匹配成功 -->
 <queuePlacementPolicy>
	 <!-- 提交任务时指定队列,如未指定提交队列,则继续匹配下一个规则; false 表示:如果指定队列不存在,不允许自动创建-->
	 <rule name="specified" create="false"/>
	 	 <!-- 提交到 root.group.username 队列,若 root.group 不存在,不允许自动创建;若root.group.user 不存在,允许自动创建 -->
		 <rule name="nestedUserQueue" create="true">
		 <rule name="primaryGroup" create="false"/>
	 </rule>
	 <!-- 最后一个规则必须为 reject 或者 default。Reject 表示拒绝创建提交失败,default 表示把任务提交到 default 队列 -->
	 <rule name="reject" />
 </queuePlacementPolicy>
</allocations>

3)分发配置并重启 Yarn
在这里插入图片描述

测试提交任务

1)提交任务时指定队列,按照配置规则,任务会到指定的 root.hadoop 队列
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi -D mapreduce.job.queuename=root.hadoop 1 1

在这里插入图片描述

2)提交任务时不指定队列,按照配置规则,任务会到 root.xiaoqiu队列
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值