在配置单元中创建数据库时权限被拒绝错误
Posted
技术标签:
【中文标题】在配置单元中创建数据库时权限被拒绝错误【英文标题】:Permission Denied error while creating database in hive 【发布时间】:2015-08-25 18:30:50 【问题描述】:我正在尝试在 hive 中创建数据库,但是当我在 HIVE 中运行以下查询时:
CREATE DATABASE BIGDATA;
我收到以下错误消息:
失败:元数据错误:MetaException(消息:得到异常:org.apache.hadoop.security.AccessControlException org.apache.hadoop.security.AccessControlException:权限被拒绝:user=aseema,access=WRITE,inode="" :hduser:supergroup:rwxr-xr-x) FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1
是什么原因造成的?
【问题讨论】:
它只是说您没有权限写入数据库。检查您的权限是否正确。 【参考方案1】:这是因为hdfs中没有用户aseema的权限。请按照以下步骤操作。
以 hduser 身份登录并执行以下操作(从日志看来 hduser 是超级用户)
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir /tmp
hadoop fs -chmod -R 777 /user/hive
hadoop fs -chmod 777 /tmp
在此之后,尝试从 aseema 用户执行 create database 语句。
【讨论】:
我在 netbeans 中工作,这个错误杀死了我将近 1 个小时。但是这些命令的帮助现在我能够创建表并对其进行操作。 这确实有效,但这是一种丑陋且不安全的不良做法。在生产环境中你会如何处理?【参考方案2】:如果你是从本地模式运行,那么你应该从 hdfs 用户运行这个命令:
su hdfs
然后根据需要更改权限,如下所示:
hdfs dfs -chown -R <username_of_new_owner> /user
【讨论】:
以上是关于在配置单元中创建数据库时权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试在 /Library/Application Support/ 中创建文件夹“efiLinq”时出现权限被拒绝错误