4

最近构建的 MR2 基本示例失败,即在伪分布式 MR2 HDFS 集群中运行 pi 示例,出现以下错误:

13/07/06 21:20:47 错误 security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=EXECUTE, inode=" /tmp/hadoop-yarn/staging":mapred:mapred:drwxrwx---

为什么会发生这种情况?

4

4 回答 4

6

像这样添加yarn.app.mapreduce.am.staging-dir你的mapred-site.xml

<property>
  <name>yarn.app.mapreduce.am.staging-dir</name>
  <value>/user</value>
</property>

此配置假定用户帐户(在您的情况下)在 HDFS 上root具有其主目录/user/root,并且暂存目录将创建为/user/root/.staging用户帐户已经具有正确权限的位置。

有关更多信息,请查看以下链接上的“步骤 4:配置暂存目录”。

于 2015-06-10T02:48:08.070 回答
5

解决方案,只需更改 /tmp/hadoop-yarn 权限:

sudo -u hdfs hadoop fs -chmod -R 777 /tmp/hadoop-yarn

让我们想象一下,鉴于该目录完全由 hadoop 的内部生命周期创建,因此该目录可能会以不正确的权限结束。

(评论将不胜感激)

于 2013-07-06T22:29:29.947 回答
0

首先,您需要正确创建临时文件夹。使用 hadoop 用户,运行以下命令:

$ hdfs dfs -mkdir /tmp
$ hdfs dfs -chmod -R 1777 /tmp

您可能想要删除 /tmp 目录的当前内容。

对于 hive 用户,如果您对 scratchdir 有类似的问题,请编辑文件 hive/conf/hive-site.xml

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
  <property>
    <name>hive.scratch.dir.permission</name>
    <value>777</value>
    <description>The permission for the user specific scratch directories that get created.</description>
  </property>
于 2019-08-12T16:23:19.247 回答
-1

U 在 HDP 中遇到此错误以运行 wordcount 的示例 jar 文件,原因如下:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): 权限被拒绝: user=root, access=EXECUTE, inode="/user/root/.staging":hdfs:hdfs:drwx- -----

从 /user 目录上的 hdfs 用户chmod 777,我可以使用我的 ubuntu 用户 sudoer 来运行 .jar 文件。我也可以使用 hdfs 用户来运行 jar。

于 2016-12-20T13:50:31.603 回答