我正在运行MapR Community Edition Hadoop集群(M3)。
不幸的是,HiveServer2服务崩溃了,根据/opt/mapr/hive/hive-0.13/logs/mapr/hive.log
中的日志文件,临时目录上的权限存在问题:
2015-02-24 21:21:08,187 WARN [main]: server.HiveServer2 (HiveServer2.java:init(74)) - Failed to create/change scratchdir permissions to 777: Could not create FileClient java.io.IOException: Could not create FileClient
我使用hive -e 'set;' | grep scratch
检查了暂存目录的设置:
hive.exec.scratchdir=/user/mapr/tmp/hive/
hive.scratch.dir.permission=700
我注意到hive.scratch.dir.permission
设置为700并且错误消息表明它想要将其更改为777.但是,根据文件系统,/mapr/my.cluster.com/user/mapr/tmp
具有777权限并且属于mapr用户
mapr@hadoop01:/mapr/my.cluster.com/user/mapr/tmp$ ls -al
total 2
drwxr-xr-x 3 mapr mapr 1 Feb 22 10:39 .
drwxr-xr-x 5 mapr mapr 3 Feb 24 08:40 ..
drwxrwxrwx 56 mapr mapr 54 Feb 23 10:20 hive
根据文件系统权限判断,我希望mapr用户可以使用此文件夹执行任何操作,因此无法理解错误消息。
我很想知道以前是否有人见过这个,如果有的话,你是怎么解决的?
更新
我查看了source code,并在警告之前注意到一些相关评论:
// When impersonation is enabled, we need to have "777" permission on root scratchdir, because
// query specific scratch directories under root scratchdir are created by impersonated user and
// if permissions are not "777" the query fails with permission denied error.
我添加了在hive-site.xml中设置以下属性:
<property>
<name>hive.scratch.dir.permission</name>
<value>777</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive/</value>
</property>
...并在HDFS中创建了/tmp/hive/
文件夹,具有777权限:
mapr@hadoop01:~$ hadoop fs -ls -d /tmp/hive
drwxrwxrwx - mapr mapr 0 2015-02-27 08:38 /tmp/hive
虽然看起来很有希望,但我仍然在hive.log
中收到相同的警告。
答案 0 :(得分:0)
更新/ tmp / hive HDFS目录的权限,将其设置为777:
hadoop fs -chmod 777 /tmp/hive
或者删除/ tmp / hive,即使删除它们,也会创建临时文件。
hadoop fs -rm -r /tmp/hive;
rm -rf /tmp/hive