?
情景一:
当在win7下面的eclipse装好插件,首次运行M/R程序的时候,想把文件从win7下面的本地文件传到HDFS文件系统上面:(点击Upload files to DFS 或者其他)
?
会遇到一个提示,如下:
?
然后点击OK,就可以了,然后你的文件就没有传上去!!!
?
情景二:
我们即使自己手动在将linux本地的文件传到HDFS中区以后,配置好之后运行,还是会出现下面的错误:
org.apache.hadoop.security.AccessControlException:?org.apache.hadoop.security.AccessControlException: Permission denied: user=weixiang, access=WRITE,inode="":root:supergroup:rwxr-xr-x
??? atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
??? atsun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
??? atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
??? atjava.lang.reflect.Constructor.newInstance(Unknown Source)
??? atorg.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:95)
??? atorg.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57)
??? atorg.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:1428)
??? atorg.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:332)
??? atorg.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1126)
??? atorg.apache.hadoop.mapred.FileOutputCommitter.setupJob(FileOutputCommitter.java:52)
??? atorg.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:186)
Caused by:?org.apache.hadoop.ipc.RemoteException:?org.apache.hadoop.security.AccessControlException: Permission denied: user=weixiang, access=WRITE,inode="":root:supergroup:rwxr-xr-x
??? atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:199)
??? atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:180)
??? atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:128)
??? atorg.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5468)
?
通过这两个情景,仔细一看,他们的错误还是一样的,看字面的意思像是HDFS下面的root目录的权限问题,我们如果是在linux系统下面的eclipse将不会出现这样的错误,因为我们的eclipse安装在window下面,跨了一个平台,所以就报了这个错,解决的简单的方法有下面两种:
?
1:通过指令给HDFS上的root目录权限
2:打开hdfs-site.xml加入一个属性值
<property> <name>dfs.permissions</name> <value>false</value> </property>
?接下来执行stop-all.sh, ? 然后重新start-all.sh? 接下来 ?刷新eclipse中的DFS ? 然后就可以随心所欲的从window下面传文件到HDFS上面, ?或者是下载output文件也可以,运行M/R程序也不会再报上面的错误了!!!
?