您的位置:首页 > 大数据 > Hadoop

HIVE权限控制(二),结合HDFS权限

2017-09-17 00:00 316 查看
摘要: 生产中公共数据一般使用外部表,一般需要结合HDFS权限共同管理

目标:
创建一个linux账户hivetest,建立一个hive数据库hivetest,hivetest账户对hivetest库用户all权限
创建一个linux账户张三,zhangsan拥有hivetest库的查询权限

1. 建hdfs目录

hadoop fs -mkdir /user/hivetest
hadoop fs -mkdir /user/hivetest/.Trash
hadoop fs -mkdir /user/hivetest/private
hadoop fs -mkdir /user/hivetest/public

2. 建用户和组

所有机器建用户,本文为了方便,用了ansible批量执行
useradd hivetest
在两台namenode分别添加用户组
groupadd hivetest_group

#批执行命令
ansible ah -m shell -a "useradd hivetest"
ansible ah -m shell -a "echo '123456'  | passwd --stdin hivetest"
ansible ah -m shell -a "groupadd hivetest_group"

3. hdfs目录赋权

hdfs 赋权
hadoop fs -chown hivetest:hivetest_group /user/hivetest
hadoop fs -chown hivetest:hivetest /user/hivetest/.Trash
hadoop fs -chown hivetest:hivetest /user/hivetest/private
hadoop fs -chown hivetest:hivetest_group /user/hivetest/public

hadoop fs -chmod 750 /user/hivetest
hadoop fs -chmod 750 /user/hivetest/.Trash
hadoop fs -chmod 750 /user/hivetest/private
hadoop fs -chmod 750 /user/hivetest/public

3. 创建HIVE数据库和角色

#需要用管理员用户,将该数据库的的 所有权赋予该用户自己
create database hivetest;
create role hivetest_role;
GRANT ALL ON DATABASE hivetest TO ROLE hivetest_role;
GRANT ROLE hivetest_role TO GROUP hivetest;

4. 给予第三方创建查询角色

#如果其他用户需要查询该表,则建立一个角色或者组,然后将该角色或者组赋予该用户即可
create role hivetest_db_select_role;
GRANT select  ON DATABASE hivetest  TO ROLE hivetest_db_select_role;
--这里可以考虑用USER/GROUP
GRANT ROLE hivetest_db_select_role TO GROUP zhangsan;

5. 创建表

#创建hdfs 目录
hadoop fs -mkdir /user/hivetest/public/hivetest_t1
hadoop fs -chown hivetest:hivetest_group /user/hivetest/public/hivetest_t1
hadoop fs -chmod 750 /user/hivetest/public/hivetest_t1

#建公共表
create  external  table hivetest_t1(
name string,
age string
) row format delimited
fields terminated by '\t'
Location 'hdfs://ns1/user/hivetest/public/hivetest_t1';

6. 三方用户zhangsan获取该库下表的权限

#---------------------------------------------------------------
#赋权时集合hdfs权限,
#其他用户如果要访问这个这个表需要将其纳入 hivetest_group组
ansible ah -m shell -a "usermod -a -G hivetest_group xxx"
ansible ah -m shell -a "usermod -a -G hivetest_group zhangsan"
--这里可以考虑用USER/GROUP
GRANT ROLE hivetest_db_select_role TO GROUP zhangsan;

7.关于撤销权限

#撤销时也是从两个方面下手,一个hdfs目录,一个是hive权限
#将用户zhaoshun从hivetest_group组中回收,之后需要用户不能访问这个表的hdfs目录
ansible ah -m shell -a "gpasswd -d zhangsan  hivetest_group"
#再将用户重角色和组中回收
#hivetest_db_select_role, 是用户给其他用户查询用的,
revoke  ROLE hivetest_db_select_role from  GROUP zhangsan;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HIVE HDFS 权限