权限被拒绝在HDFS(Permission denied at hdfs)

2019-06-17 12:45发布

我是新来的Hadoop分布式文件系统,我以后做了hadoop的单节点的完整的安装在我的machine.but当我要上传到HDFS它给出错误信息数据的Permission Denied

从具有命令端子的消息:

hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input
put: /usr/local/input-data (Permission denied)

hduser@ubuntu:/usr/local/hadoop$ 

使用sudo并添加hduser到sudouser后:

hduser@ubuntu:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe
put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x

hduser@ubuntu:/usr/local/hadoop$ 

Answer 1:

我解决了这个问题暂时通过禁用DFS permission.By添加下面的属性代码增加到conf / HDFS-site.xml中

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


Answer 2:

我有类似的情况,这里是我的方法是有所不同的:

 HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt /

你真正要做的就是你读本地文件,根据您的本地权限,但将文件放在HDFS当你喜欢认证用户hdfs 。 为此,您可以用其他ID(当心真正身份验证方案配置的,但是这通常不是个例)。

好处:

  1. 权限都保存在HDFS。
  2. 你不需要sudo
  3. 你根本不需要真正合适的本地用户HDFS“。
  4. 你并不需要复制,因为之前的点什么或更改权限。


Answer 3:

您在这里遇到了两个独立的问题:


hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied)

在这里,用户hduser没有访问到本地目录/usr/local/input-data 。 也就是说,你的本地权限限制过于严格。 你应该改变它。


hduser@ubuntu:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x

在这里,用户root (因为你使用sudo)不具有访问HDFS目录/input 。 正如你可以看到: hduser:supergroup:rwxr-xr-x说,只有hduser有写权限。 Hadoop的并没有真正尊重root作为一个特殊的用户。


为了解决这个问题,我建议你改变对本地数据的权限:

sudo chmod -R og+rx /usr/local/input-data/

然后,尝试put再次命令hduser。



Answer 4:

启动一个shell hduser(从根部),并运行命令

sudo -u hduser bash
hadoop fs -put /usr/local/input-data/ /input

[更新]还要注意的是, hdfs用户是超级用户,并拥有所有R / W特权。



Answer 5:

我用下面的步骤来解决这个问题

su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit


文章来源: Permission denied at hdfs