Radoop权限拒绝问题:RapidMiner连接Cloudera Quickstart VM失败
解决RapidMiner连接CDH Hive时的权限拒绝问题
嘿,从你贴的日志里一眼就能揪出核心问题:
Permission denied by sticky bit: user=hive, path="/tmp/radoop/cloudera/tmp_1526672733088_x0ldwew":cloudera:supergroup:drwxrwxrwx, parent="/tmp/radoop/cloudera":cloudera:supergroup:drwxrwxrwt
说白了,Hive用户没法移动那个临时目录里的文件——因为父目录/tmp/radoop/cloudera设置了sticky位(t位),这种情况下只有目录所有者或者文件所有者才能删除/移动目录里的内容,而这里Hive不是这个临时目录的所有者(所有者是cloudera用户)。
下面给你几个实用的解决办法,都是通过调整CDH配置或HDFS权限实现的,你可以根据自己的环境选:
方法1:快速调整HDFS临时目录权限(测试环境首选)
直接登录到Cloudera Quickstart VM里,执行以下HDFS命令修改Radoop临时目录的权限,去掉sticky位,同时开放足够的操作权限:
# 先查看当前目录权限确认一下 hdfs dfs -ls /tmp/radoop/cloudera # 去掉sticky位并设置777权限(测试环境完全没问题) hdfs dfs -chmod 777 /tmp/radoop/cloudera # 要是想保留sticky位但让Hive能操作,也可以用这个命令 # hdfs dfs -chmod g+w,o+w /tmp/radoop/cloudera
这个方法最快,适合你现在的测试场景,生产环境别这么干哈,得考虑安全。
方法2:修改RapidMiner的Radoop连接用户
你可以在RapidMiner里把Hive连接的用户改成cloudera——毕竟这个用户是临时目录的所有者,天生有操作权限:
- 打开RapidMiner的Cluster Manager配置界面
- 找到你导入的CDH集群配置,进入Hive连接设置
- 把JDBC连接的用户从默认的
hive改成cloudera - 保存配置后重新跑测试任务就行
方法3:调整CDH中Hive的运行用户
要是不想动RapidMiner的配置,也可以在CDH Manager里改Hive的运行用户:
- 登录CDH Manager控制台(默认地址是
http://quickstart.cloudera:7180) - 找到Hive服务,进入配置页面
- 搜索
Hive Metastore Server运行用户或者类似的配置项,把用户改成cloudera - 重启Hive服务和相关依赖服务(比如HDFS)
这样Hive整个服务都会以cloudera用户运行,自然就能操作对应的临时目录了。
方法4:配置HDFS代理用户(生产环境规范做法)
如果之后要部署到生产环境,推荐用这个更安全的方法:配置HDFS的代理用户,让Hive用户可以代理cloudera用户操作临时目录:
- 登录CDH Manager,进入HDFS服务的配置页面
- 搜索
代理用户组和代理用户主机相关配置 - 添加
hive到代理用户列表,允许其代理cloudera用户,同时指定允许的主机(比如你的宿主机IP或者VM的IP) - 重启HDFS和Hive服务
总结一下,你现在用的是测试VM,方法1或者方法2最快解决问题;要是往生产环境走,优先用方法4保证权限安全。
内容的提问来源于stack exchange,提问作者sectechguy
相关产品推荐
相关产品推荐

