2013-05-28 59 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