YARN 调度器的配置与使用
- 一、启动公平调度器
- 1.1 配置 yarn-site.xml
- 创建 fail-scheduler.xml 文件
- 二、同步配置文件
- 三、重启启动 YARN 集群
- 四、提交作业
- 五、运行结果
一、启动公平调度器
公平调度器的使用由属性yarn.resourcemanager.scheduler.class的设置所决定。YARN默认使用的是容量调度器,如果要使用公平调度器,需要将yarn-site.xml文件中的yarn.resourcemanager.scheduler.class设置为公平调度器的完全限定名。
1.1 配置 yarn-site.xml
[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
添加如下内容:
<!--调度器类型指定为 Fair Scheduler-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<!--指定 Fair Scheduler 具体配置文件位置-->
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>/usr/local/hadoop/etc/hadoop/conf/fail-scheduler.xml</value>
</property>
创建 fail-scheduler.xml 文件
[root@hadoop1 hadoop]# mkdir conf
[root@hadoop1 hadoop]# touch ./conf/fail-scheduler.xml
添加如下内容:
<?xml version="1.0"?>
<allocations>
<queue name="root">
<!--设置调度策略-->
<schedulingPolicy>fair</schedulingPolicy>
<!--允许提交任务的用户名和组-->
<aclSubmitApps>*</aclSubmitApps>
<!--允许管理任务的用户名和组-->
<aclAdministerApps>*</aclAdministerApps>
<!--默认队列-->
<queue name="default">
<minResources>1024mb, 1vcores</minResources>
<maxResources>4096mb, 4vcores</maxResources>
</queue>
<!--离线队列-->
<queue name="offline">
<!--最小资源-->
<minResources>1024mb, 1vcores</minResources>
<!--最大资源-->
<maxResources>4096mb, 2vcores</maxResources>
<!--最大同时运行application数量-->
<maxRunningApps>50</maxRunningApps>
</queue>
<!--实时队列-->
<queue name="realtime">
<!--最小资源-->
<minResources>1024mb, 1vcores</minResources>
<!--最大资源-->
<maxResources>4096mb, 2vcores</maxResources>
<!--最大同时运行application数量-->
<maxRunningApps>50</maxRunningApps>
</queue>
二、同步配置文件
因为当前Hadoop环境是伪分布集群,所以只需要修改当前节点的yarn-s和fairscheduler.xml配置文件即可。如果Hadoop为分布式集群环境,还需要将相关配置文件通过scp命令同步到集群其他节点。
三、重启启动 YARN 集群
因为公平调度器需要修改YARN相关的配置文件,所以需要重启YARN集群才能使配置文件生效。YARN集群的启停操作如下所示。
[root@hadoop1 hadoop]# /usr/local/hadoop/sbin/stop-yarn.sh
[root@hadoop1 hadoop]# /usr/local/hadoop/sbin/start-yarn.sh
四、提交作业
以Hadoop自带的WordCount为例,使用公平调度器将MapReduce应用提交到root.offline队列中运行,具体操作如下所示。
[root@hadoop1 hadoop]# /usr/local/hadoop/bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount -Dmapreduce.job.queuename=root.offline /test/words.log /test/out
上面代码执行成功: