我刚开始使用Hadoop。我写了一本样本的hadoop代码,如书中所写。但是,在执行期间,异常仍然存在。我得到的片段:
[harsh @ geek hadoop-0.20.2] $ hadoop MaxTemperature input / ncdc / sample.txt输出 线程“main”中的异常java.lang.NoClassDefFoundError:MaxTemperature 引起:java.lang.ClassNotFoundException:MaxTemperature 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) 在java.lang.ClassLoader.loadClass(ClassLoader.java:248) 找不到主类:MaxTemperature。程序将退出。
我该怎么办?
答案 0 :(得分:0)
将MaxTemperature类添加到类路径中。
答案 1 :(得分:0)
当您运行hadoop jar时,这是您应该在放入jar的目录中运行的命令(例如/usr/lib/hadoop-0.20/bin)
这可能是如何运行它(使cd到hadoop目录为您运行的hadoop版本)
答案 2 :(得分:0)
它总是查找作为主类的入口点,即设置mapper和reducer类的代码段。如果它找不到它,它会抛出classnotfound异常。
答案 3 :(得分:0)
我经历过同样的事情。我在http://digitallibraryworld.com/?p=256上记录了一步一步的解决方案。希望它可以帮助某人
答案 4 :(得分:0)
您是否将MaxTemperature放入包中?
如果是,请说明MaxTemperature.class
文件位于yourdir/bin/yourpackage/
。你需要这样做:
export HADOOP_CLASSPATH=yourdir/bin
hadoop yourpackage.MaxTemperature
答案 5 :(得分:0)
首先,对于Map Reduce Execution,您需要使用类创建Jar文件,即Mapper,Reducer,Driver类。 移动到jar文件所在的文件夹并执行
bin/hadoop Sample.jar SampleDriver InputFileName OutPutFileName
试试吧。应该使用这些流程。