在win7上使用eclipse连接hadoop集群运行mapreduce任务(Java编写)时出现如下错误提示,导致运行mapreduce作业失败
Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
解决方案:
方案一:
到服务器上修改hadoop的配置文件:conf/hdfs-core.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false:<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>
ps:修改完需要重启下hadoop的进程才能生效,生产环境出于安全考虑一般是不建议这么操作的。
方案二:
将对应的目录设置最大权限777
hadoop fs -chmod 777 /
ps:相对便捷的一个方案
方案三:
在win7系统的环境变量或java JVM变量里面添加 HADOOP_USER_NAME,值为运行HADOOP上的Linux的用户名。在Eclipse里面运行,修改完环境变量后,需要重启一下eclipse,不然可能不会生效。
ps:推荐使用的方案
方案四:
将当前系统的帐号名称修改为运行HADOOP上的Linux的用户名。