无法运行Wordcount JAR文件

时间:2015-02-20 12:08:42

标签: java hadoop

hduser@ubuntu:~/Desktop$ hadoop jar wc.jar /usr/local/hadoop/input/sample.txt /usr/local/hadoop/output
Warning: $HADOOP_HOME is deprecated.

Exception in thread "main" java.lang.ClassNotFoundException: /usr/local/hadoop/input/sample/txt
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.hadoop.util.RunJar.main(RunJar.java:153)

尝试使用java 1.7和hadoop 1.2.1运行wordcount程序。

3 个答案:

答案 0 :(得分:0)

你告诉hadoop你的主要课程是“/usr/local/hadoop/input/sample.txt”

 jar

Runs a jar file. Users can bundle their Map Reduce code in a jar file and execute it using this command.

Usage: hadoop jar <jar> [mainClass] args... 

你需要在你的java代码中使用它来设置jar类名

job.setJarByClass(WordCount.class);

答案 1 :(得分:0)

您没有遵循正确的语法。

hadoop jar jar_location main_class input_path output_path

假设主类名是“WordCount”并且wc.jar位于您的PWD中:

hadoop jar wc.jar Wordcount /usr/local/hadoop/input/sample.txt / usr / local / hadoop / output

答案 2 :(得分:0)

job.setJarByClass(WordCount.class);

赫克托耳提到的

并没有解决问题。这只是一个模糊的猜测。我仍然得到原始症状。请在发布前测试答案!

请参阅此评论:Hadoop query regarding setJarByClass method of Job class

我会在这里粘贴推荐的链接,以防它有一天消失:


嗨,这个电话,

job.setJarByClass

告诉Hadoop使用哪个jar。但我们也告诉Hadoop使用哪个jar 命令行,

hadoop jar你的jar参数

为什么我们两个地方都需要这个?

谢谢,

标记

答案: 命令行中的jar可能只是提交map-reduce的jar job,而不是jar包含Mapper和Reducer 转移到不同的节点。

你的jar真正做过的hadoop jar是设置classpath和其他的 相关环境,并在你的jar中运行main方法。你可能有一个 包含真实映射器和类的路径中的不同map-reduce-jar 减速机用来做这项工作。

祝福, Stanley Xu