错误描述:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x
用户Administator 在hadoop上执行写操作时被权限体系拒绝,在远程linux机器上设置了hadoop用户可写,而没有设置Adminstator可写。因为hadoop源代码上有一段:
- if (!isSecurityEnabled() && (user == null)) {
- String envUser = System.getenv(HADOOP_USER_NAME);
- if (envUser == null) {
- envUser = System.getProperty(HADOOP_USER_NAME);
- }
- user = envUser == null ? null : new User(envUser);
- }
解决办法:
方法一:在系统的环境变量或java工程的变量里面添加HADOOP_USER_NAME,这个值具体等于多少看自己的情况,以后会运行HADOOP上的Linux的用户名。(修改完重启eclipse,不然可能不生效)
方法二:在当前JDK的变量参数里面添加HADOOP_USER_NAME这个Java变量。