Hadoop 给出 AccessControlException

Hadoop giving AccessControlException

我正在尝试从我的 windows 机器向 HDFS 集群写入文件,但出现以下错误

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=..., access=WRITE , inode="/user/hadoop/Hadoop_File.txt":hdfs:hdfs:-rw-r--r--

在我的 hadoop 配置中

 hadoop.security.auth_to_local is set to DEFAULT 
 hadoop.security.authentication is set to SIMPLE

如果我通过

提及用户名 "hdfs"
System.setProperty("HADOOP_USER_NAME", "hdfs");

一切正常。

但如果策略很简单,则意味着无需身份验证,它应该允许任何用户创建文件 帮助我理解为什么会这样

Hadoop 中的简单身份验证意味着您无需证明您的身份,例如使用密码或令牌,但您仍然需要说出您的身份。无论您声称自己是哪个用户,Hadoop 都会相信您并为您请求的操作采用用户名。

HDFS 上仍然有权限(您可以在上面的消息中看到 hdfs:hdfs:-rw-r--r--),因此您需要声明自己是具有操作所需权限的用户,这是你对 System.setProperty("HADOOP_USER_NAME", "hdfs");

所做的

简而言之,身份与身份验证不同:)

我得到了答案 :) 你必须配置 dfs.permissions.enable = false ,在我的情况下,一旦它被关闭,它就不会抱怨任何使用的用户