hive Permission denied: user=anonymous, access=WRITE

本文解决Hive与Spark配置中常见的几个问题,包括找不到spark-assembly.jar、hive启动时URISyntaxException错误、hive命令行显示表格失败以及通过JDBC连接hive时的权限问题。提供了详细的解决步骤,如修改hive.sh中的jar路径、调整hive-site.xml配置等。

转载文章:http://blog.sina.com.cn/s/blog_c0dd8b4e0102ycsh.html

/usr/hive/warehouse 

问题一:


运行hive.sh或者hiveserver2.sh文件时报错:ls: 无法访问/home/asus/spark/lib/spark-assembly-*.jar: 没有那个文件或目录

原因:
hive.sh中有段代码如下

hive数据库常见问题总结
 

本地的spark版本是2.0,而自从spark升级到2.0.0之后,原有的lib的整个大JAR包已经被分散的小JAR包的替代,所以没有办法找到这个spark-assembly的JAR包。这就是问题所在。


解决方法:
将这个spark-assembly-*.jar`替换成jars/*.jar,就不会出现这样的问题。

 

问题一:

启动hive时报错:Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir}/${system:user.name}

解决方法:
1.查看hive-site.xml配置,会看到配置值含有"system:java.io.tmpdir"的配置项
2.hive下新建文件夹iotmp
3.将含有"${system:java.io.tmpdir}"的配置项的值修改为如上地址 /home/asus/hive/iotmp
   再次启动hive,成功!

问题二:

在hive命令行执行下列命令时出错:
hive> show tables;
报错:
Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name}

解决方法:
打开hive-site.xml,将 ${ system:user.name} 改为 ${user.name},重启hive 即可解决。
 

问题四:

jdbc连接hive,查询数据时报错:

Exception in thread "main" java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=anonymous, access=WRITE, inode="/user/hive/warehouse/hivetest":asus:supergroup:drwxr-xr-x

 

原因:hdfs中的 /user/hive/warehouse没有读写权限

执行命令:hdfs dfs -chmod -R 777 /user 

### 解决Hive SQL执行错误:Spark会话创建失败和权限问题 #### 1. Spark会话创建失败的问题分析 当Hive使用Spark作为执行引擎时,如果出现`Failed to create spark client.`错误,通常与以下因素相关: - Hive未正确配置为使用Spark作为执行引擎。确保参数`hive.execution.engine`设置为`spark`[^1]。 - `spark.home`未正确指向Spark安装路径,导致Hive无法找到Spark客户端库[^2]。 - Spark集群不可用或资源不足,例如YARN中没有足够的资源分配给Spark任务[^3]。 #### 2. 权限问题的分析 在Hive执行过程中,如果遇到`Permission denied: user=anonymous, access=EXECUTE`错误,可能是由于以下原因: - HDFS上的`/tmp`目录权限不足,当前用户(如`anonymous`)无法访问或执行文件操作[^2]。 - Hive用户未正确映射到HDFS用户组,或者HDFS的安全策略限制了用户的访问权限。 #### 3. 解决方案 ##### 配置Hive以支持Spark 确保Hive配置文件中包含以下参数,并根据实际情况调整: ```properties hive.execution.engine=spark spark.home=/path/to/spark ``` 此外,检查是否启用了正确的日志级别以捕获更多调试信息: ```sql SET hive.root.logger=DEBUG,console; ``` ##### 检查HDFS权限 验证HDFS上的`/tmp`目录权限,确保Hive用户具有适当的访问权限: ```bash hdfs dfs -chmod -R 777 /tmp hdfs dfs -chown -R hive:hadoop /tmp ``` 如果Hive运行在Kerberos环境中,确认Kerberos票据已正确获取并刷新[^2]。 ##### 验证Spark集群状态 通过以下命令检查Spark集群是否正常运行: ```bash spark-submit --version yarn application -list ``` 确保YARN中有足够的资源分配给Spark任务,并且没有其他任务占用所有资源[^3]。 ##### 示例代码:测试HiveSpark集成 以下是一个简单的Hive查询,用于测试Spark执行引擎是否正常工作: ```sql SET hive.execution.engine=spark; SELECT COUNT(*) FROM your_table; ``` 如果查询成功执行,则表明HiveSpark的集成配置正确。 #### 4. 常见错误排查 - 如果仍然报错`Failed to execute spark task`,检查Hive日志文件,重点关注`SessionHiveMetaStoreClient`初始化阶段的异常堆栈信息[^1]。 - 确保HiveSpark的版本兼容性,避免因依赖冲突导致的问题[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值