Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 配置单元用户插入,但hdfs权限被拒绝_Hive_Insert_Hdfs_Permission Denied - Fatal编程技术网

Hive 配置单元用户插入,但hdfs权限被拒绝

Hive 配置单元用户插入,但hdfs权限被拒绝,hive,insert,hdfs,permission-denied,Hive,Insert,Hdfs,Permission Denied,我的配置单元的管理员用户名为appuser。我已经创建了一个名为wuchang_test的数据库和一个名为abtestmsg的表。 是的,我描述了数据库,该数据库的所有者名称为appuser,所有者类型为USER,如下所示: 0: jdbc:hive2://hive.data.ms.netease.com:1000> describe database wuchang_test; OK db_name|comment|location|owner_name|owner_type|param

我的配置单元的管理员用户名为appuser。我已经创建了一个名为wuchang_test的数据库和一个名为abtestmsg的表。 是的,我描述了数据库,该数据库的所有者名称为appuser,所有者类型为USER,如下所示:

0: jdbc:hive2://hive.data.ms.netease.com:1000> describe database wuchang_test;
OK
db_name|comment|location|owner_name|owner_type|parameters
wuchang_test||hdfs://datahdfsmaster/hive/warehouse/wuchang_test.db|appuser|USER|
我已经定义了一个名为ep_dm的角色和一个名为bjchenweiyao的用户;此外,我已将此表的选择、删除、更新和插入授予角色ep_dm:

database|table|partition|column|principal_name|principal_type|privilege|grant_option|grant_time|grantor

wuchang_test|abtestmsg|||appuser|USER|DELETE|true|1498113549000|appuser
wuchang_test|abtestmsg|||appuser|USER|INSERT|true|1498113549000|appuser
wuchang_test|abtestmsg|||appuser|USER|SELECT|true|1498113549000|appuser
wuchang_test|abtestmsg|||appuser|USER|UPDATE|true|1498113549000|appuser
wuchang_test|abtestmsg|||ep_dm|ROLE|DELETE|false|1498113687000|appuser
wuchang_test|abtestmsg|||ep_dm|ROLE|INSERT|false|1498113696000|appuser
wuchang_test|abtestmsg|||ep_dm|ROLE|SELECT|false|1498113704000|appuser
wuchang_test|abtestmsg|||ep_dm|ROLE|UPDATE|false|1498113712000|appuser
用户bjchenweiyao试图向表wuchang_test.abtestmsg插入一些数据,但权限被拒绝:

Error: Error while compiling statement: FAILED: RuntimeException Cannot create staging directory 'hdfs://datahdfsmaster/hive/warehouse/wuchang_test.db/abtestmsg/dt=2017-05-01/.hive-staging_hive_2017-06-22_14-55-58_843_8091260031059700585-336': Permission denied: user=bjchenweiyao, access=WRITE, inode="/hive/warehouse/wuchang_test.db/abtestmsg/dt=2017-05-01/.hive-staging_hive_2017-06-22_14-55-58_843_8091260031059700585-336":appuser:supergroup:drwxr-xr-x
为了让用户bjchenweiyao拥有表wuchang_test.abtestmsg的写入权限,我将数据库所有者从用户appuser更改为角色ep_dm:

alter database wuchang_test set owner ROLE ep_dm;
或者我直接将数据库所有者从用户appuser更改为用户bjchenweiyao:

alter database wuchang_test set owner USER bjchenweiyao;
这两种方法都尝试过,但权限问题仍然存在

数据库hdfs目录权限为:

[appuser@hz-105 ~]$ hadoop fs -ls /hive/warehouse/wuchang_test.db
Found 1 items
drwxr-xr-x   - appuser supergroup          0 2017-06-22 14:39 /hive/warehouse/wuchang_test.db/abtestmsg
我知道,用户bjchenweiyao没有权限写入hdfs目录/hive/warehouse/wuchang_test.db/abtestmsg,其权限为drwxr-xr-x


但是我该怎么做才能让bjchenweiyao拥有写入权限呢?

我不确定是否是同一个问题,但我有相同的错误消息

失败:RuntimeException无法创建临时目录 'hdfs://localhost:54310/user/hive/warehouse/test_table/.hive-搭建“蜂巢”2018-09-23-U 12-51-51-U 755-U 5072249936804482657-1': 权限被拒绝:user=HADOOPUSR,access=WRITE, inode=“/user/hive/warehouse/test_table”:hduser:supergroup:drwxrwxr-x

它声明它没有hdfs目录的写入权限来创建暂存目录
/user/hive/warehouse/test_table
,因此我使用:
hdfs dfs-chmod 777/user/hive/warehouse/test_table


因此,请尝试
hdfs-chmod 777/hive/warehouse/wuchang_test.db/abtestmsg

您需要一个安全管理器,如Sentry或Ranger,将hdfs权限与hive权限对齐;否则,您必须自己管理HDFS权限:前提是您的HDFS配置具有标志*支持ACL“引发,运行类似于
hdfs dfs-setfacl-R-m的东西user:bjchenweiyao:rwx,default:user:bjchenweiyao:rwx/hive/warehouse/wuchang_test.db
…请注意,hdfs中有一个严重的bug会影响默认权限的传播(仅在Hadoop 3中修复!),因此您可能必须更正“掩码”对于所有新创建的目录和文件,无论何时遇到另一个错误,使用
hdfs dfs-setfacl-R-m mask::rwx/hive/warehouse/wuchang_test.db
Yes,我的hdfs系统的ACL将被禁用。我将在测试环境中测试ACL函数。我不知道如果我启用ACL,我的hive、hbase、kafka、mapreduce作业、spark作业和所有其他基于hdfs的组件是否会受到影响。打开ACL时,打开文件(NameNode中的附加安全检查)和各种“拒绝访问”的开销非常小异常——这使得调试变得更加困难。我的疑问是,当我打开ACL时,在添加任何ACL之前,文件和目录权限是否与关闭ACL时的权限相同?也就是说,当我打开它时,是否对我的hive、hbase和mapreduce/spark任务有任何影响?