搭建了一个Hadoop的环境,Hadoop集群环境部署在几个centos 7服务器上,现在想使用windows上的idea客户端来操作集群中的HDFS文件,但是在客户端运行时出现了如下的认证错误:
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Administrator, access=WRITE, inode=“hadoop”: hadoop:supergroup:rwxr-xr-x
解决办法:
-
在系统的环境变量或java JVM变量里面添加HADOOP_USER_NAME,这个值具体等于多少看自己的情况,以后会运行HADOOP上的centos的用户名。(修改完重启idea,不然可能不生效)
-
将当前系统的帐号修改为hadoop
-
使用HDFS的命令行接口修改相应目录的权限,hadoop fs -chmod 777 /user,后面的/user是要上传文件的路径,不同的情况可能不一样,比如要上传的文件路径为hdfs://namenode/user/xxx.doc,则这样的修改可以,如果要上传的文件路径为hdfs://namenode/java/xxx.doc,则要修改的为hadoop fs -chmod 777 /java或者hadoop fs -chmod 777 /,java的那个需要先在HDFS里面建立Java目录,后面的这个是为根目录调整权限。
-
右击计算机–>管理—>用户和组–>admin。。。改为与Linux下集群主机名相同
本次使用第一种方法,缺点是换集群之后需要更改HADOOP_USER_NAME的变量值