MyEclipse 打包到hadoop集群上运行MR程序提示ClassNotFoundException的两种原因
2014-05-14 00:19
423 查看
今天写MR程序,原来用TextInputFormat改为用KeyValueTextInputFormat类提交到hadoop上一直提示ClassNotFoundException的异常。
百思不得其解,后来查看源码时发现没有KeyValueTextInputFormat的源代码。
这时候我注意到我的集群上hadoop版本号是1.0.0,Win7上的jar包和源代码都是1.0.0.
记得刚开始配机群环境时,由于win7提交到hadoop时 源码有bug导致会导致权限的异常,我曾经把core包换成了1.0.4-modified.jar的包。
应该是这个原因,希望能提供给遇到同样问题的朋友提供一种解决思路,很可能是jar包版本的问题!
还有一种情况是 要在集群上运行程序是一定要选择“Run on Hadoop”这一项!
比如我自己在本地运行时将下面这条语句注释了以后,程序是在本地跑的:conf.set("mapred.job.tracker", "10.103.240.160:9001");
后来为了在集群上跑又将这条语句恢复了,但是我运行的时候却是点的上面那个绿色的小按钮,并没有选择“Run on Hadoop”这一选项。
于是报了Class not found 的异常。
原因应该是如果点了Run on hadoop 以后,Myeclipse会重新打包上传该程序。
而如果点绿色小三角按钮,程序还是跑在本地,只不过是通过JobClient对象与服务器进行通信了而已,并没有重新打包上传到集群上。
百思不得其解,后来查看源码时发现没有KeyValueTextInputFormat的源代码。
这时候我注意到我的集群上hadoop版本号是1.0.0,Win7上的jar包和源代码都是1.0.0.
记得刚开始配机群环境时,由于win7提交到hadoop时 源码有bug导致会导致权限的异常,我曾经把core包换成了1.0.4-modified.jar的包。
应该是这个原因,希望能提供给遇到同样问题的朋友提供一种解决思路,很可能是jar包版本的问题!
还有一种情况是 要在集群上运行程序是一定要选择“Run on Hadoop”这一项!
比如我自己在本地运行时将下面这条语句注释了以后,程序是在本地跑的:conf.set("mapred.job.tracker", "10.103.240.160:9001");
后来为了在集群上跑又将这条语句恢复了,但是我运行的时候却是点的上面那个绿色的小按钮,并没有选择“Run on Hadoop”这一选项。
于是报了Class not found 的异常。
原因应该是如果点了Run on hadoop 以后,Myeclipse会重新打包上传该程序。
而如果点绿色小三角按钮,程序还是跑在本地,只不过是通过JobClient对象与服务器进行通信了而已,并没有重新打包上传到集群上。
相关文章推荐
- Mac系统下执行hadoop jar 运行在某包内的程序 提示java.lang.ClassNotFoundException的解决方法
- hadoop分布式下打包运行时报java.lang.RuntimeException: java.lang.ClassNotFoundException的原因
- Hadoop运行jar包,提示ClassNotFoundException
- 解决Eclipse中运行WordCount出现 java.lang.ClassNotFoundException: org.apache.hadoop.examples.WordCount$TokenizerMapper问题【转】
- Eclipse远程连接Hadoop开发时,提示 ClassNotFoundException
- Hadoop-2.2.0 wordcount 编译打包执行 (java.lang.ClassNotFoundException)
- MyEclipse 或者Eclipse运行main函数,报java.lang.ClassNotFoundException
- Android最新的开发环境运行原来环境开发的程序报java.lang.ClassNotFoundException错误解决
- spring整合quartz时,服务器运行提示java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.Metho
- (转)myeclipse工程 junit不能运行 ClassNotFoundException
- 运行mapreduce程序时出现异常java.lang.RuntimeException: java.lang.ClassNotFoundException的原因
- SpringBoot项目eclipse运行正常maven install打包启动后报错ClassNotFoundException
- hadoop运行报错: java.lang.ClassNotFoundException解决方法
- 解决 Hadoop 集群执行包含 third-part lib 的 jar包的 ClassNotFoundException 问题
- MyEclipse 或者Eclipse运行main函数,报java.lang.ClassNotFoundException
- eclipse运行hadoop1版本错误如下 ClassNotFoundException:org.apache.hadoop.io.nativeio.NativeIO$POSIX$Stat
- hadoop 伪分布式系统命令行运行java类报Exception in thread "main" java.lang.ClassNotFoundException:解决办法
- java打包时,导入第三方jar运行出现ClassNotFoundException
- hadoop 运行时 ClassNotFoundException
- 运行hadoop jar 报错java.lang.RuntimeException: java.lang.ClassNotFoundException: xxxxMapper及mapreduce执行