公平调度器案例
公平调度器也有默认队列default
需求
新增两个队列test和ranan(以用户所属组命名)。
期望实现以下效果:若用户提交任务时指定队列,则任务提交到指定队列运行;若没有指定队列,test用户提交的任务到root.group.test,ranan提交的任务到 root.group.ranan 队列运行,其中group用用户所属组。
公平调度器的配置:yarn-site.xml 公平调度器队列分配文件fair-scheduler.xml(文件名可自定义)
配置多队列的公平调度器
1 修改yarn-site.xml文件,加入以下从参数
yarn-site.xml文件在/opt/module/hadoop-3.1.3/etc/hadoop/目录下
<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>
@H_502_49@2 配置fair-scheduler.xml
<?xml version="1.0"?> <allocations> <!-- 单个队列中 Application Master 占用资源的最大比例,取值 0-1 ,企业一般配置 0.1,默认0.1--> <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault> <!-- 单个队列最大资源的默认值 test ranan default 总12G12核--> <queueMaxResourcesDefault>4096mb,4vcores</queueMaxResourcesDefault> <!-- 增加一个队列 test --> <queue name="test"> <!-- 队列最小资源 --> <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> <!-- 增加一个队列 ranan --> <queue name="ranan" 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>
@H_502_49@3 分发配置文件重启yarn
[ranan@hadoop102 hadoop]$ vim yarn-site.xml [ranan@hadoop102 hadoop]$ vim fair-scheduler.xml [ranan@hadoop102 hadoop]$ xsync yarn-site.xml fair-scheduler.xml //yarn的resourceManager在103上 [ranan@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh Stopping nodemanagers Stopping resourcemanager [ranan@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh Starting resourcemanager Starting nodemanagers
@H_502_49@4 测试提交任务
1.提交任务时指定队列,按照配置规则,任务会到指定的 root.test 队列
[ranan@hadoop103 hadoop-3.1.3]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi -D mapreduce.job.queuename=root.test 1 1
@H_502_49@
2)提交任务时不指定队列,按照配置规则,任务会到 root.atguigu.atguigu 队列
[ranan@hadoop103 hadoop-3.1.3]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1
@H_502_49@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。