apache hive + sentry测试
来源:互联网 发布:淘宝2017虚假交易处罚 编辑:程序博客网 时间:2024/05/21 22:58
环境:
1. ubuntu 16.04STL
2. hadoop-2.6.0-cdh5.13.0
3. hive-1.1.0-cdh5.13.0
4. sentry-1.5.1-cdh5.13.0
——————————————————————————————
各版本下载地址:(http://archive-primary.cloudera.com/cdh5/cdh/5/)
本文主要参考:
测试Hive集成Sentry-阿里云
Apache Sentry手动安装、使用手册
Apache Sentry安装及简单使用
启动所有相关服务
- 启动mysql 服务
- 启动hadoop
- 启动sentry
- 启动hiveserver2
service mysql startstart-all.shsentry --command service --conffile /usr/local/sentry/conf/sentry-site.xmlhiveserver2
创建测试用例
- 创建测试用例events.csv
10.1.2.3,US,android,createNote10.200.88.99,FR,windows,updateNote10.1.2.3,US,android,updateNote10.200.88.77,FR,ios,createNote10.1.4.5,US,windows,updateTag
- 上传到hadoop
bin/hdfs dfs -put /path/events.csv /testbin/hdfs -ls /testbin/hdfs -chmod 777 /test/envets.csv
注释:
bin/hdfs dfs -put /path/events.csv /test 中path是本地存放events.csv的路径;
bin/hdfs -ls /test 检查是否上传成功;
bin/hdfs -chmod 777 /test/envets.csv 更改文件打访问权限。
创建测试数据库
以下操作在hive中进行
1.创建数据库和表
create database test;create table test.events ( ip STRING, country STRING, client STRING, action STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';create database filter;create view filter.events as select country, client, action from test.events;create view filter.events_usonly as select * from filter.events where country = 'US';
注释:
1. 在进行数据库操作时有时会报错:set operation sql_select_limit=default
原因是数据库驱动版本过低,将驱动换位最新的即可。MySQL :: Download Connector/J
需要替换的驱动有两处,一个在hive/lib下,一个在sentry/lib下。
2. 此时会提示SSL服务相关的警告,忽略即可,或查看数据库是否关闭了SSL服务。MySQL 5.7.16 SSL 实践指南
3. 如果hive创建数据库报错:
可以先把hive中sentry配置部分注释掉再创建用于测试的表。
我这报错如下:以DEBUG模式启动hive报错:
执行create database a;
报错:
有哪位兄弟知道怎么改,留言帮忙解决问题。
常言道忽略次要矛盾,抓住主要矛盾,所以先把这个问题留下,创建好测试用例进行授权测试,该问题日后再说。
查看详细日志:hive -hiveconf hive.root.logger=DEBUG,console
2.将测试集写到数据库表中
load data local inpath '/tmp/events.csv' overwrite into table test.events;
创建角色
以下操作在beeline中进行
1.用beeline连接hiveserver2
beeline -u "jdbc:hive2://localhost:1000/" -n hive -p hive -d org.apache.hive.jdbc.HiveDriver
注释:
因为我使用的伪分布式配置,所以hive服务地址为localhost:1000,hive为site.xml配置中的“超级用户“。
2.创建角色
create role admin_role;GRANT ALL ON SERVER localhost TO ROLE admin_role;GRANT ALL ON DATABASE test TO ROLE admin_role;GRANT ALL ON DATABASE filter TO ROLE admin_role;GRANT ROLE admin_role TO GROUP admin;GRANT ROLE admin_role TO GROUP hive;create role test_role;GRANT ALL ON DATABASE filter TO ROLE test_role;use test;GRANT SELECT(ip) on TABLE test.events TO ROLE test_role;GRANT ROLE test_role TO GROUP test;
注释:
1. admin_role:具有管理员权限,可以读写所有数据库,并授权给 admin 和 hive 组(对应操作系统上的组)
2. test_role:只能读写 filtered 数据库,和对test数据库中events表ip列的操作,并授权给 test 组。
3. 为admin_role授权的SERVER localhost为sentry-xite.xml中sentry.hive.server属性的值:
<property>
<name>sentry.hive.server</name>
<value>server1</value>
</property>
- 创建角色中出错:
hive端报错:
sentry端报错:
问题原因:hadoop的用户及用户组为系统的用户据用户组,因为系统不存在hive用户,所以报没用该用户,找不到该用户的组等问题。ApacheSentry第一弹:Server启动、连接Hue、分组详解
解决方案:在ubuntu系统中创建用户hive,admin,test创建用户组hive,admin,test并对应加入。如何添加或删除ubuntu用户和组GRANT ALL ON SERVER localhost TO ROLE admin_role;
这一句话不知道有没有生效,我的admin用户依然没show roles;
的权限,为了测试其它授权功能,我将test和filter的权限赋给了admin_role,检测角色对数据库的访问授权控制,结果是成功的。hive用户依然是超级用户,拥有所有权限。
权限测试
admin_role:拥有server的权限,包含用户组hive和admin;
test_role: 拥有数据库filter的所有权限和test数据库中events表ip列的select访问权限,包含用户组test;
我们分别进行测试。
操作命令可参考:hive集成sentry的sql使用语法
1. admin
显示当前用户角色:show current roles;
可以对test数据库中的events表操作
2. test
显示当前用户角色show current roles;
因为test_role不具备对test数据库中events表的权限,所以select * from events
失败,但具有对events表中ip列的权限,可以访问成功:
两角色主要区别在对test访问授权上,可见有效果。两个用户均可对filter数据库做操作,不做演示。
3.显示角色信息
以hive用户通过beeline登陆
显示所有角色:show roles;
显示所有角色的授权情况: show grant role admin_role;
show grant role test_role;
注释:
在test执行select操作时会报错说数据库权限是770,test无权访问该文件。
解决方案:提升文件的权限:
hadoop fs -chown -R hive:hive /user/hive/warehouse
hadoop fs -chmod -R 770 /user/hive/warehouse
之后即可万事大吉!
- apache hive + sentry测试
- Apache Sentry 初识
- apache sentry安装
- Apache Sentry架构介绍
- Impala和Hive集成Sentry
- Hue、Hive、Sentry、Airflow、Oozie
- Sentry简介—Getting Started with Sentry in Hive
- Apache Sentry手动安装、使用手册
- Hive SQL Syntax for Use with Sentry
- 关于hadoop,hive,sentry版本问题
- sentry
- APACHE RANGER 调研----3.ranger hive 测试
- <转>Apache Sentry安装及简单使用
- Hive/impala的kerberos和sentry相关问题
- Centos7 hadoop集群 mysql、hive、sentry安装验证
- Apache Hive
- Apache Hive
- Apache Hive
- 关于anaconda 找包,安装包的一些总结(关于Anaconda中PackageNotFoundError: '' Package missing in current win-64 channe)
- JAVA安装
- [ETH]以太坊突破400美元关口创历史新高
- java克隆或者说复制做个记录
- SpringBoot+BootStrapTable+PageHelper用户新增,删除,修改
- apache hive + sentry测试
- java代码获取服务器的地址
- php根据GD库生成透明背景图和和合成图片
- 末尾0的个数
- SolrDemo
- 20. Valid Parentheses
- 欢迎使用CSDN-markdown编辑器
- 华为笔试题--LISP括号匹配 解析及源码实现
- 矩阵局部最大值