0035-如何使用Sentry管理Hive外部表(补充)

简介:

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

1.文档编写目的


本文文档主要讲述如何使用Sentry管理Hive/Impala外部表权限。

  • 内容概述

1.创建测试库及外部表

2.创建角色并授权

3.授权测试

4.测试总结

  • 测试环境

1.操作系统为CentOS6.5

2.CM和CDH版本为5.12.1

3.采用root用户操作

  • 前置条件

1.集群运行正常

2.集群已启用Kerberos且正常使用

3.HDFS/Hive/Impala/Hue服务已与Sentry集成

4.Hive用户为超级用户

友情提示:总结是精华。

2.创建测试库及外部表


  1. 使用hive用户登录Kerberos,并通过beeline登录HiveServer2

创建fayson数据库

0: jdbc:hive2://localhost:10000/> create database fayson;
INFO  : Compiling command(queryId=hive_20170916155353_12e7c551-6a72-4ff3-b581-353c4dbd0fb0): create database fayson
INFO  : Semantic Analysis Completed
…
INFO  : OK
No rows affected (0.232 seconds)
0: jdbc:hive2://localhost:10000/> 

2.在fayson库下创建外部表student_hive,建表语句如下

create external table if not exists student_hive(
  name string,
  age int,
  addr string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/extwarehouse/student_hive';

向/extwarehouse/student_hive表put数据

[root@ip-172-31-6-148 ~]# hadoop fs -put student.txt /extwarehouse/student_hive
[root@ip-172-31-6-148 ~]# hadoop fs -ls /extwarehouse/student_hive
Found 1 items
-rw-r--r--   3 hive supergroup         59 2017-09-16 16:05 /extwarehouse/student_hive/student.txt
[root@ip-172-31-6-148 ~]# 

/extwarehouse/student_hive数据目录不存,在创建外部表时自动生成,且数据目录属主为hive。

0: jdbc:hive2://localhost:10000/> select * from student_hive;
...
INFO  : OK
+--------------------+-------------------+--------------------+--+
| student_hive.name  | student_hive.age  | student_hive.addr  |
+--------------------+-------------------+--------------------+--+
| fayson             | 23                | guangdong          |
| zhangsan           | 24                | shenzhen           |
| lisi               | 55                | guangzhou          |
+--------------------+-------------------+--------------------+--+
3 rows selected (0.216 seconds)
0: jdbc:hive2://localhost:10000/> 

3.创建角色并授权


  1. 创建faysonall角色并授权给fayson用户组

授权fayson用户组拥有fayson库所有权限

create role faysonall;
grant all on database fayson to role faysonall;
grant role faysonall to group fayson;

4.授权测试


  1. 使用fayosn用户登录Kerberos,通过beeline连接HiveServer2
[fayson@ip-172-31-6-148 root]$ beeline 
Beeline version 1.1.0-cdh5.12.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-6-148.fayson.com@FAYSON.COM
scan complete in 2ms
Connecting to jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-6-148.fayson.com@FAYSON.COM
Connected to: Apache Hive (version 1.1.0-cdh5.12.1)
Driver: Hive JDBC (version 1.1.0-cdh5.12.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000/> 

2.切换至fayson数据库对student_hive表操作

可以向表中插入数据

0: jdbc:hive2://localhost:10000/> insert into student_hive values('lisi', 22, 'beijing');
...
INFO  : OK
No rows affected (22.501 seconds)
0: jdbc:hive2://localhost:10000/>

可以查询表数据

0: jdbc:hive2://localhost:10000/> select * from student_hive;
...
INFO  : OK
+--------------------+-------------------+--------------------+--+
| student_hive.name  | student_hive.age  | student_hive.addr  |
+--------------------+-------------------+--------------------+--+
| lisi               | 22                | beijing            |
| fayson             | 23                | guangdong          |
| zhangsan           | 24                | shenzhen           |
| lisi               | 55                | guangzhou          |
+--------------------+-------------------+--------------------+--+
4 rows selected (0.215 seconds)
0: jdbc:hive2://localhost:10000/> 

3.HDFS验证

fayson用户可以浏览student_hive的数据目录,查看数据目录下文件内容,但没有delete和put文件的权限。

[fayson@ip-172-31-6-148 ~]$ hadoop fs -ls /extwarehouse/student_hive
Found 2 items
-rwxr-xr-x   3 hive supergroup         16 2017-09-16 16:16 /extwarehouse/student_hive/000000_0
-rw-r--r--   3 hive supergroup         59 2017-09-16 16:05 /extwarehouse/student_hive/student.txt
[fayson@ip-172-31-6-148 ~]$ hadoop fs -rmr /extwarehouse/student_hive/student.txt
rmr: DEPRECATED: Please use 'rm -r' instead.
rmr: Failed to move to trash: hdfs://ip-172-31-6-148.fayson.com:8020/extwarehouse/student_hive/student.txt: Permission denied: user=fayson, access=WRITE, inode="/extwarehouse/student_hive":hive:supergroup:drwxr-xr-x
[fayson@ip-172-31-6-148 ~]$ hadoop fs -put student1.txt /extwarehouse/student_hive/
put: Permission denied: user=fayson, access=WRITE, inode="/extwarehouse/student_hive":hive:supergroup:drwxr-xr-x
[fayson@ip-172-31-6-148 ~]$ 

测试总结:

hive创建的外部表,通过Sentry授权后,fayson用户组使用beeline和Hue能对该表进行查询和插入操作。但不能对HDFS和Hue FileBrowser上的数据目录进行新增和删除操作,由于fayson用户无操作数据目录的权限。

5.测试总结


如果这个外部表的目录没有在cm里配置成需要sentry管理的目录,通过Sentry赋权后,是没法做ACL同步的,不建议在生产系统中这样使用。如果你需要管理外部表,那么你就需要按照之前的标准文档来操作。如何使用Sentry管理Hive外部表权限

醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


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


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

相关文章
|
6月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
6月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
120 1
|
SQL 存储 安全
Hive 内部表(管理表)和外部表的区别【重点】
Hive 内部表(管理表)和外部表的区别【重点】
717 1
|
6月前
|
SQL HIVE
bigdata-20-Hive内外部表
bigdata-20-Hive内外部表
42 0
|
SQL 存储 HIVE
Hive 内部表和外部表对比
Hive 内部表和外部表区别
157 0
|
SQL 分布式计算 Hadoop
hive中删除操作及HDFS回收站管理腾出空间的实操
删除hive数据时,首先明确你使用删除数据还是连同表结构也要删除,如果只是要删除数据可以选择truncate来清空表中的数据,如果要对表进行删除,首先要考虑该表是内部表还是外部表。如果是外部表要确认数据是否还需要使用,如果不需要使用了可以直接使用HDFS命令对目录进行删除。
1211 0
|
SQL 存储 HIVE
Hive内部表与外部表的区别及使用场景
Hive内部表与外部表的区别及使用场景
|
SQL 大数据 Apache
Apache Hive--DDL--创建表--内外部表&like复制| 学习笔记
快速学习 Apache Hive--DDL--创建表--内外部表&like复制
115 0
Apache Hive--DDL--创建表--内外部表&like复制| 学习笔记
|
SQL 存储 缓存
【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表
【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表
1101 0
|
Kubernetes 监控 前端开发
Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions
Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions
303 0