【转】cloudera新增用户权限配置

摘要:
前提:cloudera cloudera管理器kerberosldapsentry问题和解决方案:hiveclient直接进入本地模式的hive,而不经过hiveserver2,因此该模式可以访问所有数据库,并具有超级管理员权限;考虑使用直线形式。例如:Java code beeline-u“jdbc:hive2://172.20.0.74:10000/data_system”-nlive-p111111或Java code beeine!例如,bi组对bi库具有读写权限,对其他库具有读权限。添加用户和用户组Java代码useraddbi-u1001usermod-a-Gibildap添加帐户和帐户组Java代码grep-E“dsp:|dmp:”/etc/passwd˃/opt/passwd。txt/usr/share/migrationtools/migrate_passwd.pl/opt/passwd.txt/opt/passwd.ldifldapadd-x-D“uid=ldapadmin,ou=people,dc=yeahmobi,dc=com”-wsecret-f/opt/passwd.ldifgrep-E“dsp:| dmp:”/etc/group˃/opt/group。txt/usr/share/migrationtools/migrate_group.pl/opt/group.txt/opt/group.ldifldapadd-x-D“uid=ldapadmin,ou=people,dc=yeahmobi,dc=com”-wsecret-f/opt/group。ldiflpasswd-x-Duid=ldapadmin,ou=people,dc=yeahmobi,dc=com'-wsecret“uid=dsp,ou=people,dc=yeahmobi”-Sdappasswd-x-D'uid=ldapadmin,ou=people、dc=yeahmobi,dc=com'-wsecret“guid=dmp,ou=person,dc=yeahmobi,dc=com”-SdapPasswd-x-Dou=ldapadin,ou=people,Dc=com'-wssecret“uid=bi,ou=people,Dc=yeahmobi,Dc=com”-在Shadowop中添加相应用户的目录和权限。Java代码hadoopfs mkdir/user/dsphadoopfs chmod-R755/user/dpshadoopfs house Rdsp:如果在dsp/user/dsphive中启用了sentryfile形式的服务,则需要将policyfilebasedsntryenabled设置为false,并在servicewide中选择sentryservice。

转自 http://lookqlp.iteye.com/blog/2189119  。   配置起来较复杂,需要在有测试环境之后再进行配置测试。  之后是有上HUE的计划的,所以这个也是一定要做的。

目标:

给各个业务组提供不同用户及用户组,并有限制的访问hdfs路径,及hive数据库。

前提:

cloudera

cloudera manager

kerberos

ldap

sentry

问题与解决:
  • hive client直走hive的本地模式,没有经过hiveserver2,所以此种方式能访问所有的数据库,具有超级管理员权限;考虑使用beeline形式。

    登陆方式例如:

    Java代码  收藏代码
    1. beeline -u "jdbc:hive2://172.20.0.74:10000/data_system" -nhive -p111111(ldap账户及密码)  

    或者

    Java代码  收藏代码
    1. beeline  
    2. !connect jdbc:hive2://172.20.0.74:10000/data_system;principal=hive/slave-74@YEAHMOBI.COM  

     输入kerberos账户及密码。

  • hue版本3.6.0不支持hive ldap,hue会提示不没有hive server2服务,参考issue

    Java代码  收藏代码
    1. cd /opt/cloudera/parcels/CDH/lib/hue  
    2. patch -p1 < /path/to/downloaded/hue-2484.patch  
     hive所有advanced safety value中加上配置:
    Java代码  收藏代码
    1. <property>  
    2.   <name>hive.server2.authentication</name>  
    3.   <value>LDAP</value>  
    4. </property>  
     restart Hue

    未解决问题:hue账户未能与ldap账户同步。

步骤:
  1. 收集用户及用户组,及对个个库的访问权限。例如bi组对bi库有读写权限及对其他库具有读权限。
  2. 所有节点增加用户和用户组
    Java代码  收藏代码
    1. useradd bi -u 1001  
    2. usermod -a -G bi bi  
     (所有节点都需要创建,而且uid必须一致)
  3. ldap增加账户及账户组
    Java代码  收藏代码
    1. grep -E "dsp:|dmp:" /etc/passwd  >/opt/passwd.txt      
    2. /usr/share/migrationtools/migrate_passwd.pl /opt/passwd.txt /opt/passwd.ldif  
    3. ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/passwd.ldif  
    4. grep -E "dsp:|dmp:" /etc/group  >/opt/group.txt  
    5. /usr/share/migrationtools/migrate_group.pl /opt/group.txt /opt/group.ldif  
    6. ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/group.ldif  
    7. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dsp,ou=people,dc=yeahmobi,dc=com" -S    
    8. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dmp,ou=people,dc=yeahmobi,dc=com" -S     
    9. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=bi,ou=people,dc=yeahmobi,dc=com" -S     
  4. hadoop中增加相应用户的目录及权限
    Java代码  收藏代码
    1. hadoop fs -mkdir /user/dsp  
    2. hadoop fs -chmod -R 755 /user/dsp  
    3. hadoop fs -chown -R dsp:dsp /user/dsp  
  5. hive配置ldap
    若之前启用了sentry file形式的服务,需要将policy file based sentry enabled 设置成false,并且service wide中选择sentry service。
    service wide advanced safed value
    Java代码  收藏代码
    1. <property>  
    2.   <name>hive.server2.authentication</name>  
    3.   <value>LDAP</value>  
    4. </property>  
    5. <property>  
    6.   <name>hive.server2.authentication.ldap.url</name>  
    7.   <value>ldap://ip-10-1-33-20.ec2.internal</value>  
    8. </property>  
    9. <property>  
    10.   <name>hive.server2.authentication.ldap.baseDN</name>  
    11.   <value>ou=people,dc=yeahmobi,dc=com</value>  
    12. </property>  
     gateway/metastory/hiveserver2 advanced safed value分别加上
    Java代码  收藏代码
    1. <property>  
    2.  <name>hive.server2.authentication</name>  
    3.  <value>LDAP</value>  
    4. lt;/property>  
     hue依赖于hive gateway的配置,即必须配置gateway,且修改后hue需要重启。
  6. 如上问题2
  7. hue设置ldap
    hue server advanced hue_safety_value_server.ini
    Java代码  收藏代码
    1. [desktop]  
    2.  ldap_username=hive  
    3.  ldap_password=111111  
     并且选择sevice wide sentry service
  8. hdfs kerberos配置中增加hdfs的权限
    service wide security
    authorized user、groups设置成* 也行
  9. yarn增加用户的使用权限
    nodemanger group  security allowed system users
  10. 重启相关服务,cloudera manager会提示重启整个集群。
  11. hive server2和metastore启动失败,奇怪现象,测试环境中没有问题,正式环境中出现认证异常,只要加上ldap认证就会失败。
    解决办法,重新再别的节点配置新的hive sever2和metastore并且cm上创建新的group。
    注意此种解决方案,hue的配置中需要修改hive server2的路径。
  12. 授权,beeline中使用hive账户登陆和授权
    Java代码  收藏代码
    1. beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nhive -p111111  
    2. CREATE ROLE admin_role ;  
    3. GRANT ALL ON SERVER server1 TO ROLE admin_role;  
    4. GRANT ROLE admin_role TO GROUP hive;   
  13. 权限测试,使用新账户登陆测试
    beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nbi -p111111
    或者通过hue,新建对应账户,beeswax测试。(此处hue与ldap账户没有同步,同步失败,后续解决)
  14. 新增加的账户,若需要访问/user/hive/warehouse,即可能需要读取db下的表数据,进行mapreduce job,如上配置后,由于该目录设置的是771(sentry service要求的),新增账户没有访问权限,想到如下解决办法:
    a.将新增账户赋予hive为附加组(所有节点),经过测试可以访问该目录了,但sentry的grant授权没有效果了,即该账户继承了hive的超级权限,此方法失败。
    b.采用acl,hdfs开启dfs.namenode.acls.enabled,并hdfs执行如下命令:
       hadoop fs -setfacl -R -m user:bi:r-x  /user/hive/warehouse,测试是通过的,而且权限都正确。此步骤需要重启整个集群。参考http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_sg_hdfs_ext_acls.html
  15. kerberos对新用户(bi)授权
    Java代码  收藏代码
    1. addprinc -randkey krbtgt/new_hostname@YEAHMOBI.COM  
    2. addprinc -randkey host/new_hostname@YEAHMOBI.COM   
    3. addprinc -randkey HTTP/new_hostname@YEAHMOBI.COM   
    4. addprinc -randkey bi/new_hostname@YEAHMOBI.COM  
    5. xst -norandkey -k bi.keytab host/new_hostname@YEAHMOBI.COM   
    6. xst -norandkey -k bi.keytab HTTP/new_hostname@YEAHMOBI.COM  
    7. xst -norandkey -k bi.keytab bi/new_hostname@YEAHMOBI.COM  
  16. mapreduce测试
    Java代码  收藏代码
    1. kinit -kt bi.keytab bi/new_hostname@YEAHMOBI.COM  
    执行hadoop jar 测试
  17. jdbc测试,参见 git clone https://github.com/firecodeman/Cloudera-Impala-Hive-JDBC-Example.git
    Java代码  收藏代码
    1. mvn clean compile  
    2. mvn exec:java -Dexec.mainClass=com.cloudera.example.ClouderaHiveJdbcExample  

免责声明:文章转载自《【转】cloudera新增用户权限配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Babel入门JSP 表单处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Hive速览

一、概述 Hive由Facebook开源,是一个构建在Hadoop之上的数据仓库工具 将结构化的数据映射成表 支持类SQL查询,Hive中称为HQL 1.读模式 2.Hive架构 3.使用Hive的原因 Hadoop数据分析的问题: MapReduce实现复杂查询逻辑开发难度大,周期长 开发速度无法快速满足业务发展 使用Hive原因 类似SQL语法,使...

Hive实现自增列的两种方法

多维数据仓库中的维度表和事实表一般都需要有一个代理键,作为这些表的主键,代理键一般由单列的自增数字序列构成。Hive没有关系数据库中的自增列,但它也有一些对自增序列的支持,通常有两种方法生成代理键:使用row_number()窗口函数或者使用一个名为UDFRowSequence的用户自定义函数(UDF)。 用row_number()函数生成代理键 INS...

CDH| Cloudera Manager的安装

一.  cloudera manager的概念 简单来说,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。 功能: 1)   管理:对集群进行管理,如添加、删除节点等操作。 2)   监控:监控集群...

HIVE优化学习笔记

概述 之前写过关于hive的已经有两篇随笔了,但是作者依然还是一枚小白,现在把那些杂七杂八的总结一下,供以后查阅和总结。今天的文章介绍一下hive的优化。hive是好多公司都在使用的东西,也有好多大公司进行定制化二次优化,比如鹅厂的Thive等。所以学习hive至关重要,本文只针对大众版免费开源的hive。官网地址:http://hive.apache.o...

Hive的web端配置——HWI

1.我们安装Hive的时候的版本为1.2.2,我们要下载1.2.2版本的web端的配置包apache-hive-1.2.2-src.tar.gz,下载地址:http://mirrors.shu.edu.cn/apache/hive/hive-1.2.2/ wget http://mirrors.shu.edu.cn/apache/hive/hive-1.2...

Hive基础之Hive数据类型

Hive数据类型    参考:中文博客:http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2843448.html          英文:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types    1、列类型    ...