原:http://blog.csdn.net/shiqidide/article/details/7585048
hadoop1.0.4在windows远程调试linux的程序时,报错:
12/04/24 15:32:44 WARNutil.NativeCodeLoader: Unable to load native-hadoop library foryour platform... using builtin-java classes where applicable
12/04/24 15:32:44 ERROR security.UserGroupInformation:PriviledgedActionExcepti
Exception in thread "main" java.io.IOException: Failed to setpermissions of path:\tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.stagingto 0700
这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。
解决方法是:修改hdfs /tmp目录权限
mango@master:~/hadoop-1.0.4/bin$ ./hadoop dfs -chmod -R 777 /tmp
mango@master:~/hadoop-1.0.4/bin$ ./hadoop dfs -ls /tmp
Found 1 items
drwxrwxrwx - mango supergroup 0 2013-01-14 16:07 /tmp/hadoop-mango
再运行就应该不报错了。如果还有错:
解决方法是,修改/hadoop-1.0.4/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉即可(有些粗暴,在Window下,可以不用检查)
- ......
-
private static void checkReturnValue(boolean rv, File p, -
FsPermission permission -
) throws IOException { -
-
} - ......
重新编译打包hadoop-core-1.0.4.jar,替换掉hadoop-1.0.4根目录下的hadoop-core-1.0.4.jar即可。
以下是我编译成功的hadop-core-1.0.4.jar:http://download.csdn.net/detail/snow_eagle_howard/4842134
替换之后,刷新项目,设置好正确的jar包依赖,现在再运行WordCountTest,即可。
//还有一个常见的权限异常:
ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="mapred":mango:supergroup:rwxr-xr-x
Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="mapred":mango:supergroup:rwxr-xr-x
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
.......
解决办法时将 /tmp目录权限设置为777