Permissions 运行作业时Hadoop DFS权限问题

Permissions 运行作业时Hadoop DFS权限问题,permissions,hadoop,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: o

我收到以下权限错误,不确定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)会更好。

我可以通过以下设置来实现这一点:

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

    #...

</configuration>

mapreduce.jobtracker.staging.root.dir
/使用者
#...

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

您还可以创建一个名为“hdfs”的新用户。非常简单的解决方案,但可能没有那么干净


当然,当您在Cloudera Hadoop Manager(CDH3)中使用色调时,您需要设置Hadoop根目录(/)的权限,而不是设置系统根目录的权限。甚至我也感到困惑,但后来意识到提到的目录是hadoop文件系统的目录,而不是系统的目录。

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

sudo -u hdfs hadoop fs -mkdir /hadoop/mapred/
2) 授予映射用户权限

sudo -u hdfs hadoop fs -chown mapred:hadoop /hadoop/mapred/

你用“myuser”启动hadoop了吗?不,我用的是Cloudera,所以hadoop是作为服务运行的,大概是在rootTry使用hadoop fs-chmod将权限设置为/到777,看看它写了什么。@orangeoctopus-它正在写/tmp/hadoop mapred-是否有更改此位置的设置?@spike-如果非root用户可以从自己的帐户运行hadoop,我更喜欢它。我注意到它正在向hdfs写入/tmp,所以我正在试图弄清楚为什么会发生这种情况,所以如果您对此有任何想法,请告诉我。谢谢,汉克斯,遇到了同样的问题。很遗憾,这不是默认值。hhhm,看起来如果我设置了这个值,则mapred.system.dir(/hadoop/mapred/system)上的权限需要更大一些。我将/mapred/system目录锁定为仅限于mapred用户(mapred.system.dir=/mapred/system)。hdfs根(/)也设置为仅hdfs用户。如果您仍然有问题,请告诉我您有哪些错误getting@stephenmulcahy-顺便说一句,我刚刚遇到了Pig的权限问题,这是因为它有自己的临时目录设置。更多信息:你也添加了什么文件?Hadoop配置还是Hive配置?当你说“Hadoop根目录”时,你是指HDFS的根目录吗?我选择不放松HDFS根目录中的权限,这样可以防止用户写入根目录(并强制用户写入一个特定目录,即其“home”:/user/),没错。上述问题中的配置似乎不正确。它应该指向HDFS上的特定目录。在我的例子中,它指向/opt/hadoop/mapred/local/staging。我给了该目录写权限,它工作正常。你是说设置mapreduce.jobtracker.staging.root.dir=/user不正确吗?请注意,在我的设置中,我还引用了一个HDFS位置。此外,我正在使用Cloudera,以防这会产生影响。