1 调度器(Resource Scheduler)
1 FIFO Scheduler
按照作业提交顺序放到先进先出的队列中执行
2 Capacity Scheduler(apache版本默认)
apache版本默认使用的
将不同作业放到不同队列中,每个队列按照FIFO或DRF进行分配资源
3 Fair Scheduler(cdh版本默认)
CDH版本默认使用的
动态划分或指定多个队列,每个队列按照Fair(默认)或FIFO或DRF(主资源公平算法)
进行分配资源
2 capacity Scheduler资源调度
2.1 默认什么都不配置的情况下是默认的default的队列。
2.2 下面配置几个队列角色,具体配置如下
首先需要在yarn-site.xml
文件中配置我们的调度方式。
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
然后再capacity-scheduler.xml
配置文件中加入下面的调度的队列和分配情况。具体配置如下:
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>prod,dev</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.queues</name>
<value>bi,bling</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.capacity</name>
<value>70</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.capacity</name>
<value>30</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.maximum-capacity</name>
<value>90</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.bi.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.bling.capacity</name>
<value>50</value>
</property>
2.3 重新启动yarn集群
[root@wyl02 sbin]# ./stop-yarn.sh
[root@wyl02 sbin]# ./start-yarn.sh
2.4重启后,我们执行一个wordcount的mapreducede任务
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount -Dmapreduce.job.queuename=bi file:/opt/hadoop/LICENSE.txt file:/outputbi
-Dmapreduce
参数是选择其中一个角色
从上图我们可以看到,这里选用的生产环境的bi队列角色去跑的任务
3 Fair Scheduler资源调度
cdh版本资源调度方式官网
apache版本的默认的调度方式是容器的调度方式,这里我们再在yarn-site.xml
中配置如下配置内容
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
配置好后,我们就可以直接启动yarn集群,启动指令上述2.3步骤。启动后,我们看到下面的资源调度的方式就变成公平调度方式了。
这里如果直接运行作业的话,就创建一个以当前登录用户名为队列名的队列运行如下图所示第二个root是指用的是root用户提交的作业;如果运行作业时指定了队列名,就在指定的队列中运行。
配置fair-scheduler.xml文件
配置fair-scheduler.xml
文件,内容如下:
<allocations>
<defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>
<queue name="dev">
<weight>40</weight>
<schedulingPolicy>fifo</schedulingPolicy>
</queue>
<queue name="prod">
<weight>60</weight>
<queue name="bi"/>
<queue name="bling"/>
</queue>
<queuePlacementPolicy>
<rule name="specified" create="false"/>
<rule name="primaryGroup" create="false"/>
<rule name="default" queue="bi.bling"/>
</queuePlacementPolicy>
</allocations>