YARN 调度器的配置与使用

YARN 调度器的配置与使用

一、启动公平调度器

公平调度器的使用由属性yarn.resourcemanager.scheduler.class的设置所决定。YARN默认使用的是容量调度器,如果要使用公平调度器,需要将yarn-site.xml文件中的yarn.resourcemanager.scheduler.class设置为公平调度器的完全限定名。

1.1 配置 yarn-site.xml

powershell 复制代码
[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml 

添加如下内容:

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 文件

powershell 复制代码
[root@hadoop1 hadoop]# mkdir conf
[root@hadoop1 hadoop]# touch ./conf/fail-scheduler.xml

添加如下内容:

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集群的启停操作如下所示。

powershell 复制代码
[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队列中运行,具体操作如下所示。

powershell 复制代码
[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

上面代码执行成功:

五、运行结果