Hiveserver2: Failed to create/change scratchdir permissions to 777: Could not create FileClient

扶醉桌前 提交于 2019-12-24 21:39:49

问题


I'm running a MapR Community Edition Hadoop cluster (M3).

Unfortunately, the HiveServer2 service crashes and, according the log file in /opt/mapr/hive/hive-0.13/logs/mapr/hive.log, there's a problem with permissions on the scratch directory:

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

I checked the settings for the scratch directory using hive -e 'set;' | grep scratch:

hive.exec.scratchdir=/user/mapr/tmp/hive/
hive.scratch.dir.permission=700

I notice that hive.scratch.dir.permission is set to 700 and the error message suggests that it wants to change this to 777. However, according to the filesystem, /mapr/my.cluster.com/user/mapr/tmp has 777 permissions and belongs to the mapr user.

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

Judging by the filesystem permissions, I would expect the mapr user to do whatever it wants with this folder and so don't understand the error message.

I'm curious to know if anyone's seen this before and, if so, how did you fix it?

Update:

I had a look at the source code, and notice some relevant comments just prior to the warning:

// 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.

I added set the following properties in 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>

... and created the /tmp/hive/ folder in HDFS with 777 permissions:

mapr@hadoop01:~$ hadoop fs -ls -d /tmp/hive
drwxrwxrwx   - mapr mapr          0 2015-02-27 08:38 /tmp/hive

Although this looked promising, I still got the same warning in hive.log.


回答1:


Update the permission of your /tmp/hive HDFS directory to set it to 777:

  hadoop fs -chmod 777 /tmp/hive

Or remove /tmp/hive , temporary files will be created anyway even when you delete them.

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


来源:https://stackoverflow.com/questions/28753538/hiveserver2-failed-to-create-change-scratchdir-permissions-to-777-could-not-cr

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!