为什么" hadoop fs -mkdir"失败,权限被拒绝?

时间:2014-03-27 01:31:19

标签: hadoop hdfs cloudera

我在我正在玩的VM机器上使用Cloudera。不幸的是我在将数据复制到HDFS时遇到问题,我得到以下结果:

[cloudera@localhost ~]$ hadoop fs -mkdir input
mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

我不太关心这个虚拟机的安全性,无论如何我可以在HDFS上开辟更多安全性吗?

6 个答案:

答案 0 :(得分:17)

在hadoop中使用mkdir需要" hadoop文件权限"。在您的示例中,您可以看到 hdfs 是具有创建文件夹权限的用户。所以如果你跑:

sudo -u hdfs hadoop fs -mkdir /import

然后将创建import文件夹。如果要更改此文件夹的所有者,请运行:

sudo -u hdfs hadoop fs -chown new_user /import

现在 new_user 可以操作import文件夹中的文件

答案 1 :(得分:10)

当你执行上面的命令时,如果没有hdfs主目录(/ user / cloudera),那么首先会创建该目录,然后在/ user / cloudera下创建目录输入

要获得cloudera用户创建自己目录的权限,您必须获得权限。 hdfs user是hdfs中的admin用户切换到hdfs然后执行以下命令

[hdfs@localhost~]$ hadoop fs -mkdir /user/cloudera ; hadoop fs -chmod 777  /user/cloudera

或者

如果您不太关心hdfs安全性,则通过在hdfs-site.xml中将below属性设置为false来禁用hdfs权限

<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

将此属性设置为false后,需要重新启动hdfs。

答案 2 :(得分:5)

在cloudera管理器中,您可以更改设置:hdfs-&gt; configuration-&gt; view&amp; edit,取消选中Check HDFS权限dfs.permissions并重新启动hdfs。

答案 3 :(得分:0)

我通过在/etc/group中创建一个超级组并更新了用户登录来解决了这个问题。我的意思是用户应该是HDFS超级组的一部分,以便能够在HDFS上进行写入。

$vi /etc/group

supergroup:x:30000:root

后来能够写在HDFS上。希望它有所帮助

答案 4 :(得分:0)

这是因为您没有足够的权限在hdfs中创建目录。尝试以sudo方式运行它:

sudo -u hdfs hadoop fs -mkdir -p /user/samplefolder

但是不建议这样做,因为它会损害安全性。

答案 5 :(得分:0)

export HADOOP_USER_NAME=hdfs

尝试运行此命令,然后创建一个目录,它对我很有用。