Hiveserver2:无法创建/更改777的scratchdir权限:无法创建FileClient

时间:2015-02-26 21:56:57

标签: hadoop mapr

我正在运行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中收到相同的警告。

1 个答案:

答案 0 :(得分:0)

更新/ tmp / hive HDFS目录的权限,将其设置为777:

  hadoop fs -chmod 777 /tmp/hive

或者删除/ tmp / hive,即使删除它们,也会创建临时文件。

hadoop fs -rm -r /tmp/hive;  
rm -rf /tmp/hive