admin管理员组

文章数量:1611902

Hadoop的yarn资源调度器一般分为FIFO,Capacity Scheduler跟Fair Scheduler。但是多租户大多常用两种Capacity Scheduler跟Fair Scheduler两种

1,Capacity Scheduler:

基于yarn的资源调度,协调不同资源需求的应用程序,比如内存、CPU、磁盘。但是本质还是资源队列,但是在队列内部还是用的FIFO,因此还是先从yarn配置文件入手

Capacity Scheduler特性:

    层次化的队列设计,这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。
    容量保证,队列上都会设置一个资源的占比,这样可以保证每个队列都不会占用整个集群的资源。
    安全,每个队列又严格的访问权限控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务。
    弹性分配,空闲的资源可以被分配给任何队列。当多个队列出现争用的时候,则会按照比例进行平衡。
    多租户租用,通过队列的容量限制,多个用户就可以共享同一个集群,同事保证每个队列分配到自己的容量,提高利用率。
    操作性,yarn支持动态修改调整容量、权限等的分配,可以在运行时直接修改。还提供给管理员界面,来显示当前的队列状况。管理员可以在运行时,添加一个队列;但是不能删除一个队列。管理员还可以在运行时暂停某个队列,这样可以保证当前的队列在执行过程中,集群不会接收其他的任务。如果一个队列被设置成了stopped,那么就不能向他或者子队列上提交任务了。
    基于资源的调度,协调不同资源需求的应用程序,比如内存、CPU、磁盘等等。

    
1.1,yarn-site.xml配置文件
<!-- 配置ResouceManager使用CapacityScheduler -->
<property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>


1.2,Capacity-site.xml配置文件
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,prod,dev</value>
<description>The queues at the this level (root is the root queue).root下的三个队列</description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>20</value>
    <description>default队列占所有资源的百分比</description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.prod.capacity</name>
    <value>30</value>
    <description>prod队列占所有资源的百分比</description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>50</value>
    <description>dev队列占所有资源的百分比</description>
</property>


<property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>eng,science</value>
    <description>dev队列下的两个子队列</description>
</property>


<property>
    <name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
    <value>50</value>
    <description>dev子队列占dev队列的百分比</description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.dev.science.capacity</name>
    <value>50</value>
    <description>dev子队列占dev队列的百分比</description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
    <value>75</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>20</value>
<description>The maximum capacity of the default queue.</description>
</property>


<property>
<name>yarn.scheduler.capacity.root.default.state</name>
<value>RUNNING</value>
<description>The state of the default queue. State can be one of RUNNING or STOPPED.</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
<value>root</value>
<description>The ACL of who can submit jobs to the default queue.</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
<value>root</value>
<description>The ACL of who can administer jobs on the default queue.</description>
</property>


<property>
<name>yarn.scheduler.capacity.root.prod.state</name>
<value>RUNNING</value>
<description>The state of the prod queue. State can be one of RUNNING or STOPPED.</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.prod.acl_submit_applications</name>
<value>uplooking</value>
<description>哪些用户或组可以向这个队列提交任务</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.prod.acl_administer_queue</name>
<value>root</value>
<description>哪个用户或组可以管理这个队列</description>
</property>

用户和用户组之间用空格分开,用户之间用“,”分割,用户组之间用“,”分割,如果queue的属性值中只有用户组,则前面保留一个空格。
用户格式:*表示任何用户。 user1,user2 group2,group2


<property>
<name>yarn.scheduler.capacity.queue-mappings</name>
<value>u:uplooking:prod,u:root:default</value>
<description>
 用户组与队列的映射关系,格式为[u or g]:[name]:[queue_name][,next_mapping]*。
 如果用户名与队列名一致时,可以使用user%代替。当用户的组与队列各一致时,可以使用%primary_group
 u:user1:queue1,g:group1:queue2,u:%user:%user,u:user2:%primary_group
yarn.scheduler.capacity.queue-mappings-override.enable,客户端是否可以修改组映射关系,默认是false
</description>
</property>

scp capacity-scheduler.xml root@node2:/opt/hadoop/etc/hadoop/
scp capacity-scheduler.xml root@node3:/opt/hadoop/etc/hadoop/

重启yarn平台 start-yarn.sh

代码提交队列
job.getConfiguration().set("mapreduce.job.queuename", "eng");


hive里单独用户(例如:wys3160)
SET mapreduce.job.queuename=eng;(新版本)
set mapred.job.queue.name=queue3;
set mapred.queue.names=queue3;


hive全部用户设置全局队列(没意义)
hive-site.xml
<property>
<name>mapreduce.job.queuename</name>
<value>eng</value>
</property>

注意:如果不加队列映射,会报错submitted by user hive to unknown queue: default(队列名)

https://blog.csdn/longshenlmj/article/details/39158927
https://wwwblogs/skyrim/p/10289057.html

本文标签: 租户HadoopSchedularCapacity