在Linux系统运行eclipse直接运行mapreduce程序找不到自己写的类

kiwicutie 2017-11-30 01:21:29
公司的hadoop集群用cloudear配置的,只有三台有外网ip,,其他都是内网ip,一直都是在自己电脑本地开发程序打成jar包 再放到linux系统的hadoop服务器上运行,所以很麻烦也不好调试
之前想用远程连接Linux服务器上做调试 后来发现由于数据节点都是内网ip 远程运行程序分发任务的时候连不到内网的数据节点

后来直接在集群的一台电脑安装eclipse来做一些程序调试 但是现在又发现测试的时候main函数找不到自己写的map的类




就是一个简单的mapreduce程序 从hdfs的文件取数来做个计算 输出结果在hdfs上,程序打成jar包在服务器上可以运行,但是在eclipse上面直接run会有下面的错误 研究了好久实在不知道怎么弄了 所以请教下大神们看下怎么回事。谢谢

console:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
preparing to startError: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class test.MapTest not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
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:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class test.MapTest not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2105)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2197)
... 8 more

Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class test.MapTest not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:196)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
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:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class test.MapTest not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2105)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2197)
... 8 more

...全文
986 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2018-07-25
  • 打赏
  • 举报
回复
配置hadoop插件,链接上集群
kiwicutie 2017-12-13
  • 打赏
  • 举报
回复
引用 3 楼 cdutfly 的回复:
运行的命令贴出来呢。要不就是类名写错 要不就是打包不完整
hadoop jar mrText.jar test.RunMainTest /tmp /test/20171129 将工程打成jar包 放到集群中运行这个命令可以执行 现在我想不通过打jar包 直接在集群中用eclipse直接运行工程
kiwicutie 2017-12-13
  • 打赏
  • 举报
回复
引用 2 楼 yan5913683 的回复:
你如果安装了eclipse-hadoop插件,配置了hdfs和RM的地址和端口的话,你在eclipse本地运行的,默认是在集群模式下运行,但是你并没有把jar包上传到集群中,所以会出现ClassNotFoundException~,你要调试的话,最好是在本地模式中!!!
在集群里面选的随便一台机器 安装了eclipse,因为觉得每次都要将工程打个JaR包放到集群运行太麻烦,也不好调试 eclipse-hadoop的jar包 以及所需要的jar包都在lib里面 包括: commons-cli.jar commons-collections.jar commons-configuration.jar commons-io-2.4.jar commons-lang.jar commons-logging-1.2.jar google-collections-1.0.jar guava.jar hadoop-auth.jar hadoop-common-2.6.0-cdh5.8.0.jar hadoop-eclipse-plugin-2.6.0.jar hadoop-hdfs.jar hadoop-mapreduce-client-core-2.6.0-cdh5.8.0.jar hbase-client-1.2.0-cdh5.8.0.jar hbase-common-1.2.0-cdh5.8.0.jar hbase-hadoop-compat-1.2.0-cdh5.8.0.jar hbase-protocol-1.2.0-cdh5.8.0.jar hbase-server-1.2.0-cdh5.8.0.jar htrace-core-3.2.0-incubating.jar htrace-core.jar htrace-core4-4.0.1-incubating.jar jts-1.14.jar log4j-1.2.17.jar metrics-core-2.2.0.jar netty-all.jar protobuf-java.jar servlet-api.jar slf4j-api-1.7.5.jar slf4j-log4j12-1.7.5.jar zookeeper.jar
小鹿乱撞ing 2017-12-12
  • 打赏
  • 举报
回复
你如果安装了eclipse-hadoop插件,配置了hdfs和RM的地址和端口的话,你在eclipse本地运行的,默认是在集群模式下运行,但是你并没有把jar包上传到集群中,所以会出现ClassNotFoundException~,你要调试的话,最好是在本地模式中!!!
kiwicutie 2017-12-12
  • 打赏
  • 举报
回复
求帮忙呀求帮忙
cdutfly 2017-12-12
  • 打赏
  • 举报
回复
运行的命令贴出来呢。要不就是类名写错 要不就是打包不完整

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧