Java Hadoop提供AccessControlException
我试图从windows计算机向HDFS群集写入一个文件,但出现以下错误 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): 权限被拒绝:用户=…,访问=写入, inode=“/user/hadoop/hadoop_File.txt”:hdfs:hdfs:-rw-r--r-- 在我的hadoop配置中Java Hadoop提供AccessControlException,java,hadoop,hdfs,Java,Hadoop,Hdfs,我试图从windows计算机向HDFS群集写入一个文件,但出现以下错误 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): 权限被拒绝:用户=…,访问=写入, inode=“/user/hadoop/hadoop_File.txt”:hdfs:hdfs:-rw-r--r-- 在我的hadoop配置中 hadoop.security.auth_to_local is s
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--
),因此您需要声明自己是一个拥有操作所需权限的用户,这就是您使用System.setProperty(“HADOOP_user_NAME”,“HDFS”)所做的代码>
简短的版本是,身份验证与身份验证不同:)我得到了答案:)您必须配置dfs.permissions.enable=false,在我的情况下是正确的,一旦关闭,它不会对任何使用过的用户投诉。感谢您的深入了解,但最近我的答案是:“你必须配置DFS PrimeSist.Eng= FALSE,它在我的情况下是真的,一旦它被关闭,它不会抱怨任何用户使用。如果你认为这是你的问题的最佳解决方案,请把它作为你自己的问题的答案来帮助其他人在未来。