问题描述:Eclipse安装了Hadoop的插件后,会读取本机用户作为任务提交和HDFS操作的用户,如果本机用户名在HDFS当中不存在,常会报下面的错:
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=***, access=WRITE, inode=***:hadoop:supergroup:rwxr-xr-x
解决方法:
1,到服务器上修改hadoop的配置文件:conf/hdfs-core.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false
2,修改本机用户名为Hadoop上已有用户名(对windows用户来说,修改用户名或者新建用户)
3,修改inode=***目录的权限,hadoop fs -chmod 777 ***
4,在代码中加入System.getProperties().put("HADOOP_USER_NAME", username);(username为HDFS上已有用户名)
个人觉得第四种方法最有效,可以从根本解决问题