我无法运行hadoop作业。我收到以下异常:
java.lang.runtimeexception:java.lang.classnotfoundexception:org.apache.cassandra.hadoop.cql3.cqloutputformat位于org.apache.hadoop.conf.configuration.getclass(configuration)。java:857)在org.apache.hadoop.mapreduce.jobcontext.getoutputformatclass(jobcontext。java:235)在org.apache.hadoop.mapred.task.initialize(task。java:513)在org.apache.hadoop.mapred.maptask.run(maptask。java:347)在org.apache.hadoop.mapred.child$4.run(child。java:255)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1190)在org.apache.hadoop.mapred.child.main(child。java:249)原因:java.lang.classnotfoundexception:org.apache.cassandra.hadoop.cql3.cqloutputformat at java.net.urlclassloader$1.run(urlclassloader)。java:366)在java.net.urlclassloader$1.run(urlclassloader。java:355)位于java.security.accesscontroller.doprivileged(本机方法)java.net.urlclassloader.findclass(urlclassloader。java:354)在java.lang.classloader.loadclass(classloader。java:425)在sun.misc.launcher$appclassloader.loadclass(launcher。java:308)在java.lang.classloader.loadclass(classloader。java:358)在java.lang.class.forname0(本机方法)在java.lang.class.forname(类。java:270)在org.apache.hadoop.conf.configuration.getclassbyname(配置。java:810)在org.apache.hadoop.conf.configuration.getclass(configuration。java:855) ... 8个以上
我肯定在$hadoop\u类路径中有cassandra jar,它们正在被发现(我知道这一点,因为如果我将它们移出类路径,那么我会得到一个noclassdeffounderror异常)。
环境是:Ubuntu12.10,Hadoop1.2.1,Cassandra1.2.13
2条答案
按热度按时间gpfsuwkq1#
所以结果很简单,在更改类路径后,不重新启动所有hadoop deamons。哦!
ct2axkht2#
您必须将jar添加到distributedcache中,以便Map程序在运行时可以使用它们。
任何不属于hadoop发行版的自定义jar如果没有包含在每个节点的hadoop类路径中,就必须以这种方式添加。