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

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

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:

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

(可左右滑动)

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

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


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

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队列提交作业。

sudo -u fayson1 hive -e "set mapreduce.job.queuename=root.fayson1;select count(*) from hive_table_test;"

(可左右滑动)

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

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

sudo -u fayson1 hive -e "set mapreduce.job.queuename=root.fayson2;select count(*) from hive_table_test;"

(可左右滑动)

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

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

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界面如果想查看某个作业的详细日志会报错如下:

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该作业

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队列提交任务。

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实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏挖掘大数据

Hadoop3.0分布式集群安装知识

问题导读 1.本文是如何定义master的? 2.如何配置hadoop守护进程环境? 3.配置Hadoop守护进程需要哪些配置文件? 4.yarn-site配...

64850
来自专栏Hadoop实操

如何启用Impala的动态资源池

在Cloudera Manager中动态资源池分为Yarn的动态资源池和Impala的动态资源池两种。Fayson在前面有多篇文章介绍了Yarn动态资源池的使用...

67040
来自专栏L宝宝聊IT

案例:HDFS分布式文件系统

23250
来自专栏岑玉海

Spark硬件配置推荐

1、存储系统   如果可以的话,把Spark的hadoop的节点安装在一起,最容易的方式是用standalone的模式安装,用mapred.child.java...

41070
来自专栏Hadoop实操

如何使用curl命令调用CM的API动态配置Yarn资源池

在使用CDH集群大数据平台过程中,用户会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的AP...

19320
来自专栏性能与架构

Hadoop如何使用Zookeeper来保障高可用?

问题描述 Hadoop 中有一个分布式调度框架 YARN,是很基础的重要框架,用来支持多种计算模型和进行资源调度。 先看下 YARN 的架构图 ? 不需要了解这...

40260
来自专栏王小雷

超详细从零记录Hadoop2.7.3完全分布式集群部署过程

超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程。包含,Ubuntu服务器创建、远程工具连接配置、Ubuntu...

56290
来自专栏Hadoop实操

如何卸载CDH(附一键卸载github源码)

本文档将介绍Cloudera Manager与CDH的卸载,并基于CDH使用parcels安装且未配置安全(AD/LDAP, Kerberos, Data En...

59060
来自专栏AILearning

Apache Zeppelin 中 HDFS文件系统 解释器

概述 Hadoop文件系统是hadoop项目的分布式,容错文件系统的一部分,通常用作Hadoop MapReduce和Apache Spark或Allux...

27650
来自专栏Hadoop实操

如何在CDSW上调试失败或卡住的Spark应用

默认情况下,CDSW会话中的Spark应用程序只显示ERROR级别的日志,当作业出现异常或卡住时无法查看作业运行详细日志及异常堆栈信息,不能根据日志的上下文正确...

16830

扫码关注云+社区

领取腾讯云代金券