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
上面代码执行成功: