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程序。
答案 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