Hive启用Sentry后如何限制用户提交Yarn资源池

2018-11-16 11:33:20 浏览数 (1)

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

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

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

1.文档编写目的


在前面Fayson介绍了《如何使用Cloudera Manager设置使用YARN队列的ACL》和《如何在Cloudera Manager中配置Yarn放置规则》。通过放置策略可以自动的将用户分的作业分配到对应的资源池,如果用户手动指定资源池则也可以正常提交作业到指定的资源池,因此需要结合Yarn队列的ACL控制,可以防止用户随意指定资源池问题。

Hive启用Sentry后需要禁用用户模拟功能,所有访问Hive的用户均是已hive用户来提交作业。在只使用放置策略的情况下,访问hive的用户可以通过mapreduce.job.queuename参数指定资源池。在Yarn启用ACL后,Hive提交作业会出现“User hive cannot submit applications to queue root.testb”问题。本篇文章Fayson主要介绍在Hive启用Sentry及Yarn启用ACL后如何限制用户提交Yarn资源池。

  • 内容概述

1.测试环境描述

2.配置Yarn ACL

3.禁用Hive指定资源池配置

4.总结

  • 测试环境

1. CM和CDH版本为5.15

2.测试环境描述


1.本篇文章基于以下测试用户进行说明

2.Yarn的资源池配置

3.Yarn的放置策略说明

基于放置规则usera的作业会自动分配到root.testa队列,userc的作业会自动分配到root.testb队列,usere的作业会自动分配到root.defaut队列。

3.配置Yarn ACL


在前面的文章《如何使用Cloudera Manager设置使用YARN队列的ACL》中已详细的描述了Yarn ACL的使用,这里就不在详细的说明。

1.在启用Yarn ACL后需要为testa和testb队列配置提交和管理访问控制

配置testa和testb组可以提交Yarn资源池的,注意这里在testa和testb资源池中均增加了hive用户。

注意:在Hive启用Sentry且Yarn启用ACL后,需要为指定的资源池增加hive的提交和管理访问控制,否则会导致作业执行失败提示“User hive cannotsubmit applications to queue root.testb”。前面也提到过Hive启用Sentry后,关闭了Hive的模拟功能,所有用户均已hive用户提交,因此在每个资源池的ACL中需要增加hive用户,同样也可以在父池添加,所有子池均会集成父池的配置。如下图所示:

4.禁用Hive指定资源池配置


由于Hive启用Sentry后,模拟用户功能关闭,导致所有作业均已hive用户提交,所以在资源池增加hive提交和管理访问控制后,所有访问Hive的用户均可以随意指定Yarn资源池,未达到限制用户提交资源池问题,因此此处还需要结合Hive的配置将mapreduce.job.queuename配置禁用。

1.使用管理员登录CM,进入hive服务配置界面

2.搜索“hive-site.xml”,在配置中增加如下配置

代码语言:javascript复制
<property>
    <name>hive.conf.restricted.list</name>
    <value>mapred.job.queue.name,mapreduce.job.queuename</value>
</property>

(可左右滑动)

保存配置并重启相应服务。

5.功能验证


1.在禁用“mapreduce.job.queuename”参数后用户不能在命令行指定Yarn的资源池

2.使用usere用户测试,由于root.default资源池并未配置hive用户的提交和管理访问控制,所以提示“User hive cannot submitapplications to queue root.default”

3.使用usera用户测试,在root.teta资源池中配置了hive用户提交和管理访问控制,该用户的作业通过放置规则可以找到对应的资源池root.testa

作业执行成功

6.总结


1.Yarn的放置规则只能为用户默认的匹配资源池,但不能限制用户手动指定符合规则的资源池。

2.YarnACL可以限制用户提交资源池的权限,防止用户提交资源池到其它符合放置策略的资源池。

3.Hive启用Sentry后,相应的资源池中需要增加hive用户的提交和管理访问控制,否则无法提交作业到相应的资源池。

4.Hive启用Sentry后禁用了用户模拟功能,导致所有作业均以hive用户提交,为了防止用户提交作业到其它资源池,需要禁用hive的mapreduce.job.queuename

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

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

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

0 人点赞