问题描述:
15/10/06 16:46:53 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/10/06 16:46:53 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \opt\data\hadoop\tmp\mapred\staging\Administrator1031870944\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \opt\data\hadoop\tmp\mapred\staging\Administrator1031870944\.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)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:126)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:942)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:550)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:580)
at com.hadoop.study.WordCount.main(WordCount.java:103)
解决办法:
1.在目录下找到FileUtil.java文件,在MapReduce工程中新建一个包:org.apache.hadoop.fs。并且把FileUtil.java文件复制到该包下,找到checkReturnValue方法,然后把该方法中的 if (!rv) {
throw new IOException("Failed to set permissions of path: " + p +
" to " +
String.format("%04o", permission.toShort()));
}
代码注释掉,然后在运行程序。
2. 将FileUtil.java文件按照上述的修改,然后重新打包为hadoop-core-1.2.1.jar,替代原来的jar包