前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0569-5.15.1-开启Sentry后LOAD DATA异常分析

0569-5.15.1-开启Sentry后LOAD DATA异常分析

作者头像
Fayson
发布2019-04-29 16:06:53
1.7K1
发布2019-04-29 16:06:53
举报
文章被收录于专栏:Hadoop实操Hadoop实操

作者:辉少

1

问题描述

在开启了Sentry的CDH集群中,Hive或Impala的操作会受Sentry的管理,不同的操作需要不同的权限。例如,要在Hive中执行ALTER DATABASE命令,用户需要拥有SERVER或DATABASE的ALL权限。本文是描述关于LOAD DATA的异常,我们先来看看Cloudera官网对于这一块的描述:

具体请参考:

https://www.cloudera.com/documentation/enterprise/5/latest/topics/cm_sg_sentry_service.html#sentry_service

可以看出如果需要LOAD DATA操作,则需要具有ALL或者INSERT权限。本文Fayson描述虽然对于Database赋予了ALL权限,但依旧会报错没有load data 权限异常。

  • 测试环境

1.CM和CDH版本为5.15.1

2.操作系统版本为RedHat7.2

3.集群已启用Kerberos

4.已启用Sentry

以下具体描述该问题,使用以下命令load data到Hive表中,提示user test_sjz does not have privileges for LOAD

代码语言:javascript
复制
use test_sjz;
#加载HDFS中数据到hive表
load data inpath ‘/user/test_sjz/super_store.csv’ into table super_store;
#加载本地数据到hive表
load data local inpath ‘/user/test_sjz/super_store.csv’ into table super_store;

查看test_sjz 用户组的权限,发现是具有test_sjz 库的all 权限的,即表示test_sjz 能使用load data 命令

代码语言:javascript
复制
show grant role test_sjz;

看到提示另一个异常,提示:this required privileges:Server=server1 ….

,于是尝试给HDFS非/user/<username> 目录和文件授权后尝试

发现依旧不能load data。

2

问题解决

原因在于Sentry将检查 LOAD DATA 语句源文件和目标表。需要目标表上的INSERT和源文件上的URI权限.

即需要将Sentry中的URI权限授予用户主目录(/ user / <username>)的活动用户。如果用户需要从HDFS中加载数据的其他目录的数据,则还必须授予用户在Sentry中的URI权限。授权语法如下:

代码语言:javascript
复制
GRANT ALL ON URI “hdfs://namenode:8020/user/<name> /” TO ROLE <role>;

注:如果你启用的NameNode的HA,建议使用Nademode 的Nameservice 来代替主机名和端口号,这可确保即使NameNode更改,URI也将保持不变。如下图红线圈出的部分所示:

登录hive用户,给/user/test_sjz 目录授权后尝试

代码语言:javascript
复制
GRANT ALL ON URI “hdfs://namenode:8020/user/<name> /” TO ROLE <role>;

然后load data 成功

代码语言:javascript
复制
use test_sjz;
#加载HDFS中数据到hive表
load data impath ‘/user/test_sjz/super_store.csv’ into table super_store;
#加载本地数据到hive表
load data local impath ‘/user/test_sjz/super_store.csv’ into table super_store;

参考文档:

Sentry 的授权模型详细列表:

https://www.cloudera.com/documentation/enterprise/5/latest/topics/cm_sg_sentry_service.html#sentry_service

Load问题参考文档:https://my.cloudera.com/knowledge/Loading-Data-from-Files-into-Tables--HiveServer2-and-Sentry?id=75660

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档