2010-09-28 132 views
0

我刚开始使用Hadoop。我写了一本书中写的示例hadoop代码。但是,在执行期间仍然会出现异常。是我所得到的代码片段:执行hadoop代码时出现问题

[恶劣@怪胎的Hadoop-0.20.2] $ Hadoop的MaxTemperature输入/ NCDC/sample.txt的输出 异常在线程 “主要” java.lang.NoClassDefFoundError:MaxTemperature 引起的: java.net.URLClassLoader上的最大温度 :190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java :248) 找不到主要类:MaxTemperature。程序将会退出。

我该怎么办?

+0

你用编译器('javac')编译你的代码吗? – 2010-09-28 22:17:00

回答

0

当你运行Hadoop的罐子,这是你应该在目录中运行命令你把罐子中(如/usr/lib/hadoop-0.20/bin)

  • Hadoop的罐子NAMEOFJAR.jar ARG1 ARG2 ARGN

从你的问题,这可能是如何运行它(使cd到Hadoop的目录版本的Hadoop正在运行)

  • CP MaxTemperature.jar/usr/lib目录/ Hadoop的0.20/bin中
  • 苏Hadoop的
  • CD /usr/lib/hadoop-0.20/bin
  • Hadoop的罐子MaxTemperature.jar输入/ NCDC/sample.txt的输出
+0

是否意味着我必须为我的代码创建一个jar文件?本书还说了这一点,但它的写法是这样的就好像它只是一个选项,如果我必须,我该如何创建一个? – Harsh 2010-09-30 01:50:05

+0

你必须做一个jar文件。如果你是我们日蚀,有一个选项。教程不应该很难找到。 – coffeepac 2010-10-25 19:14:31

0

将MaxTemperature类添加到您的类路径。

+0

我试过了。它仍然没有工作。 “设置CLASSPATH =/home/harsh/hadoop/hadoop-0.20.2/MaxTemp。java “ – Harsh 2010-09-28 20:17:24

+0

或者你可能要求我做别的事情?因为我对Hadoop完全陌生,正如我在文章中提到的那样 – Harsh 2010-09-28 20:33:29

+0

我的印象是,它的工作原理与类似于这个问题的java类路径问题非常相似,基于你的标签 – Woot4Moo 2010-09-28 20:36:19

0

它总是寻找作为主类的入口点,设置您的映射器和Reducer类的代码片段。如果找不到它,它会抛出classnotfound异常。

0

我经历过同样的事情。我在http://digitallibraryworld.com/?p=256上记录了一步一步的解决方案。希望它可以帮助别人

+1

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 – Lix 2012-05-19 09:47:14

0

你把MaxTemperature放在一个包里吗?

如果是这样,说你的MaxTemperature.class文件在yourdir/bin/yourpackage/。你需要做的:

export HADOOP_CLASSPATH=yourdir/bin 
hadoop yourpackage.MaxTemperature 
0

在地图首次减少执行你需要创建Jar文件与类即映射器,减速机,驱动程序类。 移动到文件夹中的jar文件所在,并执行

bin/hadoop Sample.jar SampleDriver InputFileName OutPutFileName 

试试吧。应该与这些流程一起工作。