hdfs权限被拒绝

时间:2012-07-21 15:19:36

标签: shell security hadoop permissions hdfs

我是hadoop分布式文件系统的新手,我已经在我的机器上完成了hadoop单节点的安装。但是当我要将数据上传到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并将suduser添加到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$ 

6 个答案:

答案 0 :(得分:60)

我通过禁用dfs权限临时解决了这个问题。通过添加以下属性代码 到conf / hdfs-site.xml

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

答案 1 :(得分:49)

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

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

您实际执行的操作是根据本地权限读取本地文件,但在将文件放在HDFS上时,您将通过用户hdfs进行身份验证。您可以使用其他ID执行此操作(注意真正的身份验证方案配置,但通常不是这种情况)。

优点:

  1. 权限保留在HDFS上。
  2. 您不需要sudo
  3. 您根本不需要实际适当的本地用户'hdfs'。
  4. 由于之前的观点,您无需复制任何内容或更改权限。

答案 2 :(得分:14)

您在遇到两个不同的问题:


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

答案 3 :(得分:5)

以hduser(从root)启动shell并运行命令

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

[更新] 另请注意,hdfs用户是超级用户并具有所有r / w权限。

答案 4 :(得分:4)

我已使用以下步骤

解决了这个问题
su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit

答案 5 :(得分:1)

对于Hadoop 3.x ,如果您在未经身份验证(例如user=dr.who)时尝试在HDFS上创建文件,则会收到此错误。

不建议用于需要安全的系统,但是,如果您想完全在Hadoop 3中禁用文件权限,则hdfs-site.xml设置已更改为:

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

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml