Yarn的资源调度与隔离

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yarn的资源调度与隔离相关的知识,希望对你有一定的参考价值。

三种资源调度器介绍:

注意:Capacity Scheduler这个是雅虎公司分支(apache版本默认使用的容器调度器)

Fair scheduler这个是facebook公司分支(CDH版本默认使用的调度器)

注:DRF算法(主资源公平算法)
       作业1:cpu资源是主资源
       作业2:内存资源是主资源

FIFOScheduler原理:

Capacity Scheduler原理; 

Capacity Scheduler配置(capacity-scheduler.xml)
1、dev队列分成eng和science子队列
2、maxmum-capacity属性指定最大容量,不会占用其他资源
3、capacity容器还可以配置最大资源数、同时运行多少应用、队列的ACL认证
4、指定应用队列名称:mapreduce.job.queuename
<configuration>
    <property>
        <name>yarn.scheduler.capacity.root.queues</name>
        <value>prod,dev</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.queues</name>
        <value>eng,science</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.prod.capacity</name>
        <value>40</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.capacity</name>
        <value>60</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
        <value>75</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
        <value>50</value>
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.science.capacity</name>
        <value>50</value>
    </property>

</configuration>

配置:yarn-site.xml

<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

 Fair Scheduler原理: 

Fair Scheduler配置(fair-scheduler.xml)
1、每个队列中weight权重属性,作为公平调度的依据。若是动态划分,权重都是1
2、defaultQueueSchedulingPolicy属性配置队列内调度方式
3、每个队列中的schedulingPolicy属性配置该队列的调度方式,优先级高
4、Fair调度器会基于queuePolacementPolicy规则确定应用放到哪个队列
specified:应用指定队列名
primaryGroup:队列名为用户组的队列
user:队列名为用户的队列
default:指定队列
默认:specified、user、default
<?xml version="1.0"?>
<allocations>
<defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>
<queue name="prod">
    <weight>40</weight>
    <scheduling>fifo</scheduling>
</queue>
<queue name="dev">
    <weight>60</weight>
    <queue name="eng"></queue>
    <queue name="science"></queue>
</queue>
<queuePlacemenPolicy>
    <rule name="specified" create="false"></rule>
    <rule name="primaryGroup" create="false"></rule>
    <rule name="default" queue="dev.eng"></rule>
</queuePlacemenPolicy>
</allocations>

 查看调度器:
http://hadoop-senior01.test.com:8088中的scheduler

 

资源隔离(NodeManager) 

 

 

 

 

 

查看Yarn的隔离资源:
/etc/init.d/cgconfig restart

cd /cgroup

查看:

 

 参考地址:yarn使用cgroup隔离cpu资源 - 简书 (jianshu.com)https://www.jianshu.com/p/e283ab7e2530

 

 

以上是关于Yarn的资源调度与隔离的主要内容,如果未能解决你的问题,请参考以下文章

Yarn的资源调度与隔离

浅谈Hadoop YARN资源隔离机制

Hadoop - Yarn架构介绍

Hadoop Yarn调度器的选择和使用

YARN中内存的设置

Hadoop YARN中内存的设置