前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Cloudera Manager设置使用YARN队列的ACL

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

作者头像
Fayson
发布2018-07-12 15:22:25
5.1K0
发布2018-07-12 15:22:25
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


YARN的队列默认支持ACL的功能,即可以控制哪些用户/组可以提交任务到指定队列,也可以控制哪些用户/组可以管理该队列的作业(删除作业)。通过Cloudera Manager的“动态资源池配置”可以界面化配置YARN的资源队列,队列权重,队列资源,以及队列的ACL相关。本文Fayson主要是介绍如何在Cloudera Manager配置YARN队列的ACL

  • 内容概述:

1.启用YARN的ACL

2.创建队列并进行ACL设置

3.队列ACL的测试

4.其他问题测试

5.总结

  • 测试环境:

1.CM5.14.3/CDH5.14.2

2.操作系统版本为Redhat7.4

3.采用root用户进行操作

4.集群未启用Kerberos

2.启用YARN的ACL


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

2.设置yarn.admin.acl

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

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

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

(可左右滑动)

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

3.创建队列并进行ACL设置


1.首先为了后面的测试,我们在集群所有节点上创建fayson1和fayson2两个用户。

代码语言:javascript
复制
sh ssh_do_all.sh node.list "useradd fayson1"
sh ssh_do_all.sh node.list "useradd fayson2"

(可左右滑动)

Fayson之前已经创建过这个2个用户,所以有一些报错。

2.从Cloudera Manager进入“动态资源池配置”

3.设置根root队列的ACL

保存

4.新建队列fayson1

点击“创建”,然后设置ACL

点击“创建”

注意:这里设置fayson2组可以管理fayson1这个队列

5.同样的方式新建fayson2队列

注意:这里管理访问策略不设置,默认集成父队列root的用户/组。

6.点击“刷新动态资源池”,不用重启集群。

4.队列ACL测试


1.使用fayson1用户往队列root.fayson1队列提交作业。

代码语言:javascript
复制
sudo -u fayson1 hive -e "set mapreduce.job.queuename=root.fayson1;select count(*) from hive_table_test;"

(可左右滑动)

运行成功,说明用户可以往自己有权限的队列里提交作业。

2.使用fayson2往root.fayson1队列里提交作业

代码语言:javascript
复制
sudo -u fayson1 hive -e "set mapreduce.job.queuename=root.fayson2;select count(*) from hive_table_test;"

(可左右滑动)

报错,说明用户不能往自己没权限的队列里提交作业。

3.使用fayson2往root.fayson2队列里提交作业,然后使用fayson1用户kill该作业。

代码语言:javascript
复制
sudo -u fayson2 hive -e "set mapreduce.job.queuename=root.fayson2;select count(*) from hive_table_test;"
sudo -u fayson1 yarn application -list
sudo -u fayson1 yarn application -kill application_1528363734538_0007

(可左右滑动)

首先启动作业

再开启一个终端用fayson1用户kill该作业

发现kill作业失败,打开刚开始提交作业的终端发现作业成功转型完毕。

说明如果用户没有队列的管理访问权限,没办法kill该队列里的作业。

5.其他问题测试


1.当我们开启了YARN的ACL后,打开8088界面如果想查看某个作业的详细日志会报错如下:

代码语言:javascript
复制
You (User dr.who) are not authorized to view application application_1528363734538_0007

(可左右滑动)

2.这是因为YARN的8088界面默认使用的是dr.who用户来访问的,如果设置了YARN的ACL,如果想要查看作业的详细日志,需要把dr.who用户加入到yarn.admin.acl里。

3.保存配置修改并重启集群,再次从YARN的8088查看作业,可以成功打开查看。

可以打开查看。

4.我们在第二章“创建队列并进行ACL设置”中,对于root.fayson2队列的“管理访问控制”设置为空,默认继承父队列root的用户/组。

我们使用fayson2往root.fayson2队列提交一个任务,并且使用fayson2用户kill该作业

代码语言:javascript
复制
sudo -u fayson2 hive -e "set mapreduce.job.queuename=root.fayson2;select count(*) from hive_table_test;"
sudo -u fayson2 yarn application -list
sudo -u fayson2 yarn application -kill application_1528366612258_0002

(可左右滑动)

发现kill作业成功,即使该用户/组不在队列的“管理访问控制”里,但是只要是自己提交的作业就能kill自己的作业。

5.我们在第二章“创建队列并进行ACL设置”中,对于root.fayson1队列的“管理访问控制”设置为fayson2,但是在“提交访问控制”中却没有设置fayson2用户/组。

我们使用fayson2用户往root.fayson1队列提交任务。

代码语言:javascript
复制
sudo -u fayson2 hive -e "set mapreduce.job.queuename=root.fayson1;select count(*) from hive_table_test;"

(可左右滑动)

任务执行成功,说明即使该用户不在队列的“提交访问控制”列表里,如果配置在“管理访问控制”中,也可以往该队列提交作业。

6.总结


1.使用Cloudera Manager可以对YARN服务的ACL进行界面化配置,要开启该功能,我们需要同时在YARN服务配置中进行配置,以及对各个队列进行配置。

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

3.队列会默认继承来自父队列的“提交访问控制”和“管理访问控制”,所以如果要限制用户对队列的的权限,父队列(比如root)也一定要设置,因为父队列的优先级是最高的。当用户往YARN提交作业时,YARN在检查该用户的权限时,会先检查leaf queue(比如我们测试的root.fayson1)有没有权限,如果没有,则往上找父节点(比如root)看有没有权限,如果有,则也可以成功提交任务。

4.某个用户可以一直kill自己提交的作业,即使该用户不在“管理访问控制”的用户/组里。

5.一旦用户具有某个队列的“管理访问控制”,即使他不在“提交访问控制”里,他依旧可以往该队列提交任务。

6.如果开启了YARN的ACL,YARN的8088查看作业详细信息时,会报错,需要把dr.who用户加入到yarn.admin.acl配置里

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档