最近构建的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,索引节点= “/ TMP / Hadoop的纱线/分期”:mapred:mapred:drwxrwx ---
为什么会发生这种情况?
答案 0 :(得分:5)
解决方案,只需更改/ tmp / hadoop-yarn权限:
sudo -u hdfs hadoop fs -chmod -R 777 / tmp / hadoop-yarn
让想象一下,如果这个目录完全是由hadoop的内部生命周期创建的,那么这个目录最终会有不正确的权限。
(评论将不胜感激)
答案 1 :(得分:3)
在yarn.app.mapreduce.am.staging-dir
上添加mapred-site.xml
,如下所示:
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>
此配置假设用户帐户(在您的情况下为root
)在HDFS上具有其主目录/user/root
,并且暂存目录将创建为/user/root/.staging
其中的用户帐户已经拥有正确的权限。
有关详细信息,请查看followig链接上的“步骤4:配置暂存目录”。
答案 2 :(得分: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>
答案 3 :(得分:-1)
你在HDP中遇到这个错误,为wordcount运行一个示例jar文件:
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): 权限被拒绝:user = root,access = EXECUTE, 索引节点=&#34; /user/root/.staging":HDFS:HDFS:drwx ------
来自/ user目录下的hdfs用户 public interface CompanyRepository extends MongoRepository<Company, String>{
@Query(value = "{ 'employer.userId' : ?0 }")
Company findByCompanyUserUserId(String userId);
}
,我可以使用我的ubuntu用户sudoer来运行.jar文件。我也可以使用hdfs用户来运行jar。