MR2中的基本权限错误



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

2006年7月13日21:20:47安全性错误。UserGroupInformation:PriviledgedActionException as:root(auth:SIMPLE)cause:org.apache.hadoop.security.AccessControlException:权限被拒绝:user=root,access=EXECUTE,inode="/tmp/haooop yarn/stating":mapred:mapred:drwxrwx---

为什么会发生这种情况?

mapred-site.xml上添加yarn.app.mapreduce.am.staging-dir,如下所示:

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

此配置假定用户帐户(在您的案例中为root)在HDFS上有其主目录/user/root,并且临时目录将创建为/user/root/.staging,其中用户帐户已经具有正确的权限。

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

  • http://www.cloudera.com/content/cloudera/en/documentation/core/v5-2-x/topics/cdh_ig_yarn_cluster_deploy.html

解决方案,只需更改/tmp/hoop纱线权限:

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

考虑到这个目录完全是由hadoop的内部生命周期创建的,那么这个目录最终可能会有不正确的权限,这让我们拭目以待。

(欢迎评论)

首先,您需要正确创建临时文件夹。使用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>

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

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

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

相关内容

  • 没有找到相关文章

最新更新