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数据

[[email protected] ~]# hadoop fs -put student.txt /extwarehouse/student_hive
[[email protected] ~]# 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
[[email protected] ~]# 

/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
[[email protected] root]$ beeline
Beeline version 1.1.0-cdh5.12.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000/;principal=hive/[email protected]
scan complete in 2ms
Connecting to jdbc:hive2://localhost:10000/;principal=hive/[email protected]
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文件的权限。

[[email protected] ~]$ 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
[[email protected] ~]$ 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
[[email protected] ~]$ hadoop fs -put student1.txt /extwarehouse/student_hive/
put: Permission denied: user=fayson, access=WRITE, inode="/extwarehouse/student_hive":hive:supergroup:drwxr-xr-x
[[email protected] ~]$ 

测试总结:

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

5.测试总结



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

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



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


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

原文地址:http://blog.51cto.com/14049791/2320843

时间: 2024-09-30 13:24:36

0035-如何使用Sentry管理Hive外部表(补充)的相关文章

0015-如何使用Sentry管理Hive外部表权限

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的ec2-user用户进行操作 2.前置准备 2.1创建外部表数据父目录 1.使用hive用户登录Kerberos [[email protected] 1874-hive-HIVESERVER2]

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

Hive 外部表 分区表

  之前主要研究oracle与mysql,认为hive事实上就是一种数据仓库的框架,也没有太多另类,所以主要精力都在研究hadoop.hbase,sqoop,mahout,近期略微用心看了下hive.事实上hive还是比我想象中好用的多,心里有点点暗爽,不论是与hadoop的衔接,还是在对外查询分析,定期hsql生成报表方面,都很方便.能够不用mapreduce.直接用hive生成报表. 真是方便.  Hive 提供两者表的两种使用方式,一种是内部表(托管表),第二种就是外部表. 对于两种表的使

hive外部表的建立与数据匹配

1.建立hive的外部表匹配hdfs上的数据 出现如下报错: hive (solar)> select * from solar.ori_mysql_sqoop_open_third_party_user_da limit 10; OK Failed with exception java.io.IOException:java.io.IOException: Not a file: hdfs://f04/sqoop/open/third_party_user/dt=2016-12-12 Tim

hive外部表

创建外部表.数据从HDFS获取  只是建立了链接,hdfs中的数据丢失,表中数据也丢失;hdfs数据增加,表中数据也增加 上传文件 创建外部表 删除文件 执行查询语句,发现少了 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/9220855.html

CDH Sentry 管理Hive鉴权

在CM管理界面上要开启一些选项,这里不做详细说明,网上一查都有,推荐文章http://www.jianshu.com/p/055c40dcb8c5 但仅限于看配置的内容,至于下面的,作者没有详细解释 sentry的权限设置是在hive sql中完成的,需要用Beeline登录,如beeline -u jdbc:hive2://hiveIP:10000 -n user -p passwd 用户名密码属于hive所在的OS服务器,也就是说你要在hiveserver2上建立一个用户并且设置密码才可以登

创建Hbase Hive外部表报错: Unable to determine ZooKeeper ensemble

创建HBase的Hive外部表 1: create external table ttt(rowkey string,info map<string,string>)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:") TBLPROPERTIES ("hb

【原创】问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat at org.apache.spark.sql.hive.SparkHiveWrit

Hive管理表,外部表及外部分区表的深入探讨

Hive管理表,也叫内部表.Hive控制着管理表的整个生命周期,默认情况下Hive管理表的数据存放在hive的主目录:/user/hive/warehouse/下,并且当我们删除一张表时,这张表的数据也会相应的被删除掉,在文件层面上讲,就是在Hive主目录下的表目录以及目录里面的数据文件都会被删除掉. 管理表能够有效的管理表的数据,但是不利于对数据的分享,同一份数据,我希望既能够指向表A,有能够分享给表B,但是相应的这些表不应该控制数据的生命周期,这种表在Hive里面成为外部表.在创建外部表的时