在eclipse中调试Hadoop遇到的问题
2014-09-10 16:22
309 查看
14/09/10 15:42:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/09/10 15:42:55 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop-1275750701\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop-1275750701\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
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:918)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:912)
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:1149)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:912)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
at hadoop.run.HadoopMain.run(HadoopMain.java:43)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at hadoop.run.HadoopMain.main(HadoopMain.java:89)
解决方案:
程序打成jar包可以在Hadoop中运行,但是在eclipse中出现上述问题。此问题是window下的权限问题,因为在window下是虚拟的Hadoop运行环境,所以解决方式也比较粗暴。
将window下的/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue方法体注释掉如下:
14/09/10 15:42:55 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop-1275750701\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop-1275750701\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
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:918)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:912)
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:1149)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:912)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
at hadoop.run.HadoopMain.run(HadoopMain.java:43)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at hadoop.run.HadoopMain.main(HadoopMain.java:89)
解决方案:
程序打成jar包可以在Hadoop中运行,但是在eclipse中出现上述问题。此问题是window下的权限问题,因为在window下是虚拟的Hadoop运行环境,所以解决方式也比较粗暴。
将window下的/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue方法体注释掉如下:
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())); } **/ } 重新编译打包hadoop-core-1.0.2.jar,替换掉hadoop-1.0.2根目录下的hadoop-core-1.0.2.jar即可 不会编译hadoop-core-1.0.2.jar的可以采用另一种方式,仅编译/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java即可;步骤如下: 使用eclipse工具,新建一个MapReduce项目;然后将/hadoop-1.0.2/src/core下面的org文件夹以及org下所以子目录复制到MapReduce项目的src下找到[code]/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java按照上述修改更改保存后,到workspace下面找到该项目编译后的.class文件(FileUtil$CygPathCommand.class和 FileUtil.class),然后找到hadoop-core-1.0.2.jar,双击打开,将这个文件替换即可。
相关文章推荐
- win7下eclipse远程调试Hadoop遇到的问题解决办法
- eclipse 与hadoop调试环境遇到的问题
- Hadoop 编译 Eclipse 插件及创建eclipse项目 遇到的问题
- eclipse调试postgre遇到的问题以及解决方法
- vs2009调试遇到问题/json解析错误/eclipse项目转myeclipse项目
- ubuntu下搭建hadoop+链接eclipse遇到的问题记录
- hadoop入门搭windows eclipse环境时遇到的几个问题以及解决方案
- 哪些年遇到过的Andriod问题(16)Eclipse如何调试
- 关于win7系统远程调试Hadoop时遇到的问题
- ubuntu上搭建eclipse下hadoop-2.7.1集群(全分布式)开发环境遇到的几个问题笔记
- 在OS X上使用eclipse远程连接Hadoop遇到的问题总结
- 在windows下,用eclipse链接hadoop遇到的问题。
- eclipse调试遇到的问题集锦
- 在windows基于Eclipse编写hadoop时,遇到的 WARN util.NativeCodeLoader问题
- 关于Eclipse调试Hadoop所出现的一些问题及解决方案
- 在eclipse中配置好hadoop的插件后使用DFS遇到的问题
- 把hadoop源码导入到eclipse中遇到的问题
- Windows下用Eclipse开发Hadoop程序遇到的问题及解决方法
- hadoop0.23 的代码编译与Eclipse环境下调试 问题
- Cygwin上Eclipsef运行Hadoop遇到的有关问题