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 ,在我的情况下,一旦它被关闭,它就不会抱怨任何使用的用户
我正在尝试从我的 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 ,在我的情况下,一旦它被关闭,它就不会抱怨任何使用的用户