hadoop3.0 java.lang.ClassNotFoundException
来源:互联网 发布:小苍淘宝店外设 编辑:程序博客网 时间:2024/05/09 19:59
最近兴趣来了,转身就入了hadoop的坑,差点疯掉,对于做了这么多年程序的我来说,学习起来不算难。但是,这玩意最新版中文文献都很少,版本间改动还不少,官方说明又不全面,于是就坑了一大堆人。今天先来说说 java.lang.ClassNotFoundException
1.mapred-site.xml 这个文件是需要加入这个节点 mapreduce.application.classpath ,该参数用来指定执行mapreduce时搜索的class路径,相信这个在其他人的集群搭建中也有说明。如果你运行自带的 wordcount ,出现java.lang.ClassNotFoundException ,那么大概就是这个节点没有配置
$HADOOP_HOME/etc/hadoop,
$HADOOP_HOME/share/hadoop/common/*,
$HADOOP_HOME/share/hadoop/common/lib/*,
$HADOOP_HOME/share/hadoop/hdfs/*,
$HADOOP_HOME/share/hadoop/hdfs/lib/*,
$HADOOP_HOME/share/hadoop/mapreduce/*,
$HADOOP_HOME/share/hadoop/mapreduce/lib/*,
$HADOOP_HOME/share/hadoop/yarn/*,
$HADOOP_HOME/share/hadoop/yarn/lib/*
2.在伪分布式中,根据教程在windows下用ecllipse创建了自己的wordcount.jar,并且用setJarByClass,setMapperClass,setReducerClass指定相应的class,然后发现比如说放在/home/wordcount.jar 去执行hadoop jar /home/wordcount.jar xxx.xxx.xxx.xxx ,居然出现
2016-11-11 23:50:13,258 INFO mapreduce.Job: Task Id : attempt_1478936149617_0003_m_000000_1, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class aether.hadoop.mr.WordCount$WordMapper not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2277)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:187)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:747)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1790)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:169)
Caused by: java.lang.ClassNotFoundException: Class aether.hadoop.mr.WordCount$WordMapper not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2181)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2275)
... 8 more
这就纳闷了,难道打包的问题?各种打包后依然不行。我当时已经确信WordMapper 这类肯定在这个包里面的,而且当时很奇怪,自带的wordcount是能执行的。机智的我,把自己写的wordcount放在自带的wordcount的路径下,果然。成功执行。那么我确定了,就是mapreduce.application.classpath没有搜索我放在home下的wordcount.jar中的class。于是,在java中,加入configuration.set("mapreduce.application.classpath", System.getProperty("user.dir")); 即可在任意目录下运行
3.今天我换在了真正的分布式集群中,居然又出现java.lang.ClassNotFoundException,差点没被气吐血。这玩意就差点坑死我。终于在csdn上有人提及mapred.jar,http://blog.csdn.net/shiqidide/article/details/8166960。在java中加上configuration.set("mapred.jar", System.getProperty("user.dir")+"/WordCount.jar"); 终于能正常运行了。。。
- hadoop3.0 java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException翻译
- java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException: 解决方法
- Tomcat:java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException: HaierTVFactory
- java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException: ContextLoaderListener
- java.lang.ClassNotFoundException 异常
- java.lang.ClassNotFoundException
- java.lang.classnotfoundexception错误
- java.lang.ClassNotFoundException: ContextLoaderListener
- java.lang.ClassNotFoundException: ...
- SSH:java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException:
- java.lang.classnotfoundexception
- java.lang.ClassNotFoundException…
- java.lang.ClassNotFoundException
- innodb存储引擎
- 使用属性文件连接数据库
- java面试资料
- 如何更改表中的列顺序
- Node.js Tuple元组操作
- hadoop3.0 java.lang.ClassNotFoundException
- Android设计模式之单例设计模式
- apk、dex、odex梳理
- state-threads官方文档介绍篇翻译
- 【BZOJ 1084】最大子矩阵
- LeetCode 199. Binary Tree Right Side View
- 图的基本操作
- 为什么随机性对于深度学习如此重要?
- 事务的隔离级别都有哪些?