0
点赞
收藏
分享

微信扫一扫

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL

文档编写目的




YARN的队列默认支持ACL的功能,即可以控制哪些用户/组可以提交任务到指定队列,也可以控制哪些用户/组可以管理该队列的作业(删除作业)。通过YARN Queue Manager UI可以界面化配置YARN的资源队列,队列权重,队列资源,以及队列的ACL等。本文主要讲述如何在CDP DC 7.0.3集群上使用YARN Queue Manager UI来控制队列的ACL。


  • 测试环境:

1.Redhat7.6

2.采用root用户操作

3.CM和CDP DC版本为7.0.3


启用YARN的ACL




1.通过Cloudera Manager进入YARN的配置,启用YARN的ACL。

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce


2.设置yarn.admin.acl

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_02

如上所述,这里我们设置为“yarn yarn”,即用户yarn和组yarn,当然只设置一个用户yarn也一样。

YARN的管理员设置,如可执行yarn rmadmin/yarn kill等命令,该值必须配置,否则后续的队列相关的acl管理员设置无法生效。配置值时可以设置user/group:

user1,user2 group1,group2 #user和group用空格隔开
group1,group2 #只有group情况下,必须在最前面加上空格


3.保存配置更改并重启集群服务

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_03

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_04


创建队列并进行ACL设置




1.在集群创建下列用户,并配置到不同的组。

如下图,用户usera,userb,userc,userd,usere所属的组都跟自己同名。用户userf的组为usere,与用户usere为同一个组。 

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_05


2.在CM上点击集群,再点击YARN Queue Manager UI进入队列管理界面

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_06

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_07


3.点击root旁边的三个点,进行子队列的创建,这里分别创建队列usera和userb

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_08


点击后,进行添加,设置队列名和CONFIGURED CAPACITY的百分比,这里所有队列的CONFIGURED CAPACITY百分比加起来必须是100%,否则不能保存。

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_09

全部添加完之后,如下图

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_10


4.设置队列的ACL权限

以root.usera为例,点击旁边的三个点,然后选择查看/编辑队列

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_11

编辑后如下图,这个设置的意思是用户usera有提交应用到队列root.usera的权限。用户userb,userc和用户组usere里面的用户拥有对队列root.usera的管理权限。

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_12

对队列userb的设置如下,表示用户usera,userb拥有对队列root.userb的提交应用的权限,下面的Queue Administer ACL里面是天的一个空格,表示所有用户都没有管理权限

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_13


队列ACL测试




1.分别用用户usera,userb和userd提交任务到root.usera

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -D mapred.job.queue.name=usera 1 10


0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_14

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_15

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_16

根据上面的测试可以看到,拥有Submit Application ACL或者Queue Administer ACL权限的用户或者组都可以向该队列提交任务。没有权限的用户,则会提交任务失败。


2.通过用户usera提交任务到root.usera。然后在任务执行过程中,分别用usera,userb,userd,userf来kill任务,看是否拥有队列的管理权限

提交任务命令如下

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -D mapred.job.queue.name=usera 1000 10

kill application的命令如下,后面的applicaition ID根据提交的任务来进行修改

yarn application -kill application_1582953488656_0018

如下图,用户usera终止任务成功

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_17


如下图,用户userb终止任务成功

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_18


如下图,用户userd终止任务失败

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_19

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_20


如下图,用户userf终止任务成功

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_hadoop_21

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_22

以上测试说明,提交任务的用户和拥有该资源池管理权限的用户或用户组,拥有对该队列的管理权限。


3.再用用户usera提交任务到队列root.userb然后使用用户userb进行kill该任务。 

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_mapreduce_23

0760-7.0.3-如何使用Cloudera Manager设置使用YARN队列的ACL_jar_24

从上图可以看到,用户userb执行kill命令失败,提示userb没有权限进行管理该任务。说明了只有提交任务权限的用户,不能对该队列进行管理。


总结





1.要通过YARN Queue Manager UI进行资源池队列的ACL控制,需要先在YARN的配置里面勾选启用ResourceManager ACL。

2.一旦配置了队列的ACL,用户可以往自己有权限的队列里提交作业,如果该队列没权限,则作业提交失败。如果用户没有队列的管理访问权限,没办法kill该队列里的作业。

3.子队列会继承父队列的权限,在子队列设置权限前,父队列ACL要设置成空格。

4.某个用户可以kill自己提交的作业,即使该用户不在“Queue Administer ACL”的用户/组里。

5.一旦用户具有某个队列的“Queue Administer ACL”,即使他不在“Submit Administer ACL”里,他依旧可以往该队列提交任务。

6.在配置框里面,user和group之间用空格隔开。多个user或者多个group用逗号分隔。如果只配置group,需要在前面加上空格。

举报

相关推荐

0 条评论