2013-05-28 30 views
0

我可以创造的MapReduce程序,这样我就可以在Eclipse配置的Hadoop。之后,我可以创造1映射,2减速,3.mapreducerDriver 后,我可以在shell命令提示符下的Makefile的帮助下创建的jar文件, 后我可以使用 此命令如何在Ubuntu的hadoop平台上执行jar文件?

hadoop jar $ {JarFile} $ {MainFunc} input output 
  1. make文件 的JarFile = “采样0.1.jar” MainFunc = “mypack.Mapreduce” LocalOutDir = “/ TMP /输出”

我使用后

jar-cvf $ {Sample-0.1.jar} -C bin /。 创建jar文件,最后我可以写这个命令。

hadoop jar $ {Sample-0.1.jar} $ {mypack.Mapreduce} input output 

终于我得到像这个错误将进入命令提示符。

的bash:$ {} mypack.Mapreduce:坏替代

我怎样才能解决这个问题。 pleasae帮我

现在我发现sollution

hadoop jar $ {Sample-0.1.jar} mypack.Mapreduce input output 

然后Hadoop的将运行。

+2

为什么使用“$ {...}”? – zsxwing

+0

这是一个糟糕的替代品,因为mypack.Mapreduce不是一个变量。就像他们不参与变量一样运行它。 '的hadoop罐采样0.1.jar mypack.Mapreduce输入output' – greedybuddha

+0

**如果我使用像的hadoop罐子采样0.1.jar mypack.Mapreduce输入输出I面对这个错误**'异常在线程“主” java.io. IOException:打开作业jar时发生错误:Sample-0.1.jar \t at org.apache.hadoop.util.RunJar.main(RunJar.java:90) 导致:java.util.zip.ZipException:打开zip文件时出错 \t在java.util.zip.ZipFile.open(本机方法) \t在java.util.zip.ZipFile中。 (ZipFile.java:127) \t在java.util.jar.JarFile中。 (JarFile.java:135) \t在java.util.jar.JarFile中。 (JarFile.java:72) \t在org.apache.hadoop.util.RunJar.main(RunJar。java:88) ' –

回答

0

写像compile.sh脚本

$的mkdir wordcount_classes

$ javac的-classpath $ {HADOOP_HOME}/Hadoop的 - $ {} HADOOP_VERSION -d -core.jar wordcount_classes WordCount.java

$ jar -cvf /usr/joe/wordcount.jar -C wordcount_classes /。

仅供参考:http://hadoop.apache.org/docs/r1.0.4/mapred_tutorial.html

+0

如果我做这样的事情,在这种情况下,我得到异常classnotfound on运行使用 Hadoop的罐子myjar.jar MianClass输入输出 异常的jar:发现映射器或减速 –

+0

两内侧classnot做你的主类是包内,如果是使用包名与类名一起。 – user1844111