我试图从windows机器向HDFS集群写入一个文件,但是出现了以下错误
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):许可被拒绝: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");一切都很好。
但是,如果策略很简单,就意味着没有身份验证,它应该允许任何用户创建文件,帮助我理解为什么会发生这种情况。
发布于 2015-07-31 10:10:14
我得到了答案:)您必须配置dfs.permissions.enable = false,在我的情况下,这是正确的,一旦它被关闭,它不会对任何使用的用户抱怨
发布于 2015-07-31 07:40:37
Hadoop中的简单身份验证意味着您不需要证明自己是谁,例如使用密码或令牌,但仍然需要说明您是谁。无论您声称自己是哪个用户,Hadoop都会相信您,并为您请求的操作采用用户名。
HDFS上仍然有权限(您可以在上面的消息中看到使用hdfs:hdfs:-rw-r--r-- ),因此您需要断言自己是一个拥有操作所需权限的用户,这就是您对System.setProperty("HADOOP_USER_NAME", "hdfs");所做的事情。
简短的版本是,标识与身份验证不一样:)
https://stackoverflow.com/questions/31740512
复制相似问题