2014-02-14 103 views
2

everyone。我最近成功地在我的電腦上安裝了Windows的HDP2.0。它也通過了HDP2.0提供的煙霧測試示例。我正嘗試通過命令行編譯我自己的mapreduce程序。我使用的命令行:`命令行編譯mapreduce作業

的javac -classpath C:\ HDP \ Hadoop的2.2.0.2.0.6.0-0009 \ Hadoop的2.2.0.2.0.6.0-0009-core.jar添加 wordcountclass WordCount.java

但是,它不起作用。我發現我的c:\hdp\hadoop-2.2.0.2.0.6.0-0009文件夾下實際上沒有hadoop-2.2.0.2.0.6.0-0009-core.jar。我想知道如何使用HDP2.0 for windows編譯mapreduce程序。我不確定哪些jar文件需要設置爲類路徑。你能幫我嗎,非常感謝!

PS:錯誤消息都是關於找不到符號Mapper,Reducer和MapReduce API的對象。

+0

嘗試找到這些庫並將它們添加到類路徑中:hadoop-mapreduce-client * hadoop-mapreduce-client-jobclient * –

回答

1

我目前在Eclipse中使用成功(參見下面的類路徑): Hadoop的共* Hadoop的hdfs- * 類Hadoop MapReduce的客戶端* 類Hadoop MapReduce的客戶jobclient * 蜂巢-JDBC * 蜂房metastore- * 蜂巢服務 libfb303 * libthrift * log4j的 SLF4J的API * SLF4J-log4j12 *

其中有些是在不同的地方,有些是在Hadoop的目錄,Hadoop的HDFS ,hadoop-mapreduce,hadoop紗線, hbase,hcatalog,配置單元。

我包括所有那些有jar文件然後從那裏修剪下來的位置。在Linux中,我出口是這樣的:

出口CLASSPATH =:$ CLASSPATH.::/usr/lib/hadoop/lib/native/ :/ usr/lib中/的Hadoop/

但是,爲了回答你的問題,只需找到上面的庫,並應該工作。另外,如果你想與已建成的系統來播放,請嘗試Cloudera的快速啓動VM:

https://www.cloudera.com/content/support/en/downloads/download-components/download-products.html?productID=F6mO278Rvo

它已經自帶了Hadoop的安裝和MapReduce作業的一些示例Eclipse代碼。

Windows和Linux沒有什麼區別,只是設置類路徑的方式。這些庫是一樣的。

編輯:

順便說一句,我編譯我的代碼是這樣的(首先創建mapstuff_classes目錄):

javac -cp $CLASSPATH -d mapstuff_classes MapStuff.java 

然後創建一個jar文件:

jar -cvf mapstuff.jar -C mapstuff_classes/ . 

後來總算像這樣運行:

hadoop fs -mkdir input // creates a directory in hadoop 
hadoop fs -copyFromLocal data.csv input // copies your data into hadoop 

hadoop jar mapstuff.jar MapStuff input output // hadoop creates the output directory, took me a while to realize that.