运行作业时出现Hadoop DFS权限问题

时间:2011-09-08 17:12:37

标签: permissions hadoop

我收到以下权限错误,并且不确定为什么hadoop正在尝试写入此特定文件夹:

hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 2 100000
Number of Maps  = 2
Samples per Map = 100000
Wrote input for Map #0
Wrote input for Map #1
Starting Job
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=myuser, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

知道为什么要写入我的hdfs的根目录吗?

更新:暂时将hdfs root(/)设置为777权限后,我看到正在编写“/ tmp”文件夹。我想一个选项就是创建一个具有开放权限的“/ tmp”文件夹,供所有人写入,但如果将其写入用户文件夹(即/ user / myuser / tmp),从安全角度来看会很好。

4 个答案:

答案 0 :(得分:15)

我能够通过以下设置实现此目的:

<configuration>
    <property>
        <name>mapreduce.jobtracker.staging.root.dir</name>
        <value>/user</value>
    </property>

    #...

</configuration>

还需要重新启动jobtracker服务(特别感谢Jeff在Hadoop邮件列表上帮助我追踪问题!)

答案 1 :(得分:2)

1)使用以下命令在hdfs中创建{mapred.system.dir} / mapred目录

sudo -u hdfs hadoop fs -mkdir /hadoop/mapred/

2)授予mapred用户

的权限
sudo -u hdfs hadoop fs -chown mapred:hadoop /hadoop/mapred/

答案 2 :(得分:0)

您还可以创建名为“hdfs”的新用户。相当简单的解决方案,但可能不那么干净。

当然,这是您使用Hue和Cloudera Hadoop Manager(CDH3)

答案 3 :(得分:0)

您需要设置hadoop根目录(/)的权限,而不是设置系统根目录的权限。即使我感到困惑,但后来意识到提到的目录是hadoop的文件系统,而不是系统的。