Hadoop MR2中的基本权限错误

Hadoop MR2中的基本权限错误,hadoop,permissions,yarn,Hadoop,Permissions,Yarn,最近构建的MR2基本示例失败,即在psuedo分布式MR2 HDFS群集中运行pi示例,错误如下: 13/07/06 21:20:47 ERROR security.UserGroupInformation:PriviledgedActionException as:root(auth:SIMPLE)原因:org.apache.hadoop.security.AccessControlException:Permission denied:user=root,access=EXECUTE,ino

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

13/07/06 21:20:47 ERROR security.UserGroupInformation:PriviledgedActionException as:root(auth:SIMPLE)原因:org.apache.hadoop.security.AccessControlException:Permission denied:user=root,access=EXECUTE,inode=“/tmp/hadoop-thread/staging”:mapred:mapred:drwxrwx---


为什么会发生这种情况?

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

sudo-u hdfs hadoop fs-chmod-R 777/tmp/hadoop纱线

让我们想象一下,如果这个目录完全是由hadoop的内部生命周期创建的,那么它将如何以不正确的权限结束


(欢迎评论)

在您的
mapred站点.xml
上添加
warn.app.mapreduce.am.staging dir
,如下所示:

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

warn.app.mapreduce.am.staging-dir
/使用者
此配置假定用户帐户(在您的情况下为
root
)在HDFS上有其主目录
/user/root
,并且登台目录将被创建为
/user/root/.staging
,其中用户帐户已具有正确的权限

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


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。

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

$ hdfs dfs -mkdir /tmp
$ hdfs dfs -chmod -R 1777 /tmp
您可能希望删除/tmp目录的当前内容

对于配置单元用户,如果您对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>

hive.exec.local.scratchdir
${system:java.io.tmpdir}/${system:user.name}
用于配置单元作业的本地暂存空间
hive.download.resources.dir
${system:java.io.tmpdir}/${hive.session.id}\u资源
用于在远程文件系统中添加资源的临时本地目录。
hive.scratch.dir.permission
777
已创建的用户特定临时目录的权限。