我在我正在玩的VM机器上使用Cloudera。不幸的是我在将数据复制到HDFS时遇到问题,我得到以下结果:
[cloudera@localhost ~]$ hadoop fs -mkdir input
mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
我不太关心这个虚拟机的安全性,无论如何我可以在HDFS上开辟更多安全性吗?
答案 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
尝试运行此命令,然后创建一个目录,它对我很有用。