博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改hadoop FileUtil.java,解决权限检查的问题
阅读量:6255 次
发布时间:2019-06-22

本文共 2671 字,大约阅读时间需要 8 分钟。

    在这篇文章中,第15.)中提到权限相关的异常,如下:

15/01/30 10:08:17 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable15/01/30 10:08:17 ERROR security.UserGroupInformation: PriviledgedActionException as:zhangchao3 cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-zhangchao3\mapred\staging\zhangchao3502228304\.staging to 0700Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-zhangchao3\mapred\staging\zhangchao3502228304\.staging to 0700    at     at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)    at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856)    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)    at java.security.AccessController.doPrivileged(Native Method)    at javax.security.auth.Subject.doAs(Subject.java:415)    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)    at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)    at org.apache.hadoop.examples.WordCount.main(WordCount.java:68)

    根据提示信息,可以看到,这个异常是org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)行抛出来的,把这个位置的源代码贴出来,研究一下:

private static void checkReturnValue(boolean rv, File p,                                        FsPermission permission                                       ) throws IOException {    if (!rv) {      throw new IOException("Failed to set permissions of path: " + p +                             " to " +                             String.format("%04o", permission.toShort()));    }  }

在上面的异常信息中,FileUtil.java:689行是 throw new IOException(“Failed to ….., 我直接将这个函数的if语句去掉,如下:

private static void checkReturnValue(boolean rv, File p, FsPermission permission)    throws IOException  {}

    这样,chekReturnValue成为一个空函数,这样就不会对权限进行检查,在/home/hadoop/hadoop-1.0.3/中执行, ant jar进行编译,编译中可能遇到的问题见: ,编译好了后,生成如下的文件:

    将编译好生成的hadoop-core-1.0.4-SNAPSHOT.jar文件拷贝到windows上,使用Java Decoder可以看到checkReturnValue已经被修改:

将hadoop-core-1.0.4-SNAPSHOT.jar,修改为hadoop-core-1.0.3.jar文件,覆盖eclipse工程中的hadoop-core-1.0.3.jar文件:

       ------》   

重新执行Run on hadoop,就可以成功的运行了。(如何执行Run on hadoop见: 11节)

修改后的jar包下载地址: 

 

 

转载地址:http://cqjsa.baihongyu.com/

你可能感兴趣的文章
android mock location
查看>>
不要问我能赚多少,当你问这句话的时候,你的思想还停留在给别人打工的阶段,我只是你的仓库,能挣多少得问你自己想挣多少(转)...
查看>>
[MFC] 高仿Flappy bird 桌面版
查看>>
careercup-C和C++ 13.8
查看>>
JEFF BANKS_百度百科
查看>>
tar命令的详解
查看>>
MVC-@html.ActionLink的几种参数格式
查看>>
详细解读Volley(一)—— 基本Request对象 & RequestQueue
查看>>
Second glance in Go
查看>>
java 遍历arrayList的四种方法
查看>>
rm 命令(转)
查看>>
[禅悟人生]真知从实践中来
查看>>
Chrome 报 Resource interpreted as Script but transferred with MIME type text/plain 警告的解决办法...
查看>>
memcpy的使用方法总结
查看>>
关于C++ const 的全面总结
查看>>
[转载]如何破解Excel VBA密码
查看>>
【BZOJ】3757: 苹果树
查看>>
clang
查看>>
IOS成长之路-Nsstring中搜索方法rangeOfString
查看>>
递归函数的概念使用方法与实例
查看>>