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

2020-04-21 15:58:13 浏览数 (1)

文档编写目的

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。

2.设置yarn.admin.acl

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

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

代码语言:javascript复制
user1,user2 group1,group2 #user和group用空格隔开
 group1,group2 #只有group情况下,必须在最前面加上空格

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

创建队列并进行ACL设置

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

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

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

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

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

全部添加完之后,如下图

4.设置队列的ACL权限

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

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

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

队列ACL测试

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

代码语言:javascript复制
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -D mapred.job.queue.name=usera 1 10

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

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

提交任务命令如下

代码语言:javascript复制
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根据提交的任务来进行修改

代码语言:javascript复制
yarn application -kill application_1582953488656_0018

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

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

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

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

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

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

从上图可以看到,用户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 人点赞