Hadoop PriviledgedActionException: Failed to set permissions 解决办法

错误描述:

13/09/12 17:59:00 ERROR security.UserGroupInformation: PriviledgedActionException as:leo cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-leo\mapred\staging\leo480143202\.staging to 0700

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-leo\mapred\staging\leo480143202\.staging to 0700

at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:691)

at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:664)

at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:514)

at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:349)

at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:193)


该bug见https://issues.apache.org/jira/browse/HADOOP-7682


解决方法:

修改FileUtil类checkReturnValue方法重新放入hadoop-core.jar中,

http://blog.csdn.net/java2000_wl/article/details/7598040 提供了hadoop-core-1.0.4.jar,但我用的是hadoop-core-1.2.1.jar。于是我将上面jar中的FileUtil.class提取出来,替换了hadoop-core-1.2.1.jar中的文件。


替换方法:用7-zip或者其他压缩软件打开hadoop-core.jar,找到org\apache\hadoop\fs目录,将FileUtil.class替换原jar包的文件。


此方法能适用于多版本的hadoop-core.jar,只是需要各位自己动一下手。


FileUtil.class下载地址

hadoop-core-1.2.1.jar下载地址


你可能感兴趣的:(hadoop)