eclipse連hadoop2.x運行wordcount

1、新建java工程,而且導入hadoop相關jar包 java

4.1.2 新建java工程(須要手動導入hadoop相應jar包),具體以下圖所示:linux

            4.1.2.1 新建java工程完成後,下面添加hadoop相應jar包,hadoop2.3.0相應jar包在/hadoop-2.3.0/share/hadoop目錄中。shell

            4.1.2.2 進入Libraries,點擊Add Library添加hadoop相應jar包。
apache

            4.1.2.3 新建hadoop相應library成功後添加hadoop相應jar包到該library下面便可。
api

            4.1.2.4 須要添加的hadoop相應jar包有:eclipse

                /hadoop-2.3.0/share/hadoop/common下全部jar包,及裏面的lib目錄下全部jar包
oop

                /hadoop-2.3.0/share/hadoop/hdfs下全部jar包,不包括裏面lib下的jar包
ui

                /hadoop-2.3.0/share/hadoop/mapreduce下全部jar包,不包括裏面lib下的jar包spa

                /hadoop-2.3.0/share/hadoop/yarn下全部jar包,不包括裏面lib下的jar包.net

參考:eclipse中hadoop2.3.0環境部署及在eclipse中直接提交mapreduce任務

2、新建WordCount類,找到官方WordCount類的源碼,在

hadoop-2.6.0\share\hadoop\mapreduce\sources\hadoop-mapreduce-examples-2.6.0-sources.jar中,找到wordcount類,把代碼複製出來便可。目錄hadoop-2.6.0\share\hadoop\mapreduce\sources下面都是源碼。

3、添加hadoop.dll和winutils.exe等而且添加到環境變量。

1.下載hadoop.dll和winutils.exe等,添加到hadoop的bin目錄下,版本最好要對應(hadoop2.6.0不能使用hadoop2.2.0版本的dll文件。hadoop2.3.0可使用hadoop2.6.0的dll文件,可是使用hadoop2.2.0的dll文件會出問題),dll文件在hadoop相關軟件裏面能夠找到。不然會報winutls沒法找到等等錯誤。

注意:在eclipse運行storm-hdfs時也會報

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path

但這個錯誤不用管,由於storm-hdfs只是使用一下hdfs的api,並不須要運行mapreduce程序。

2.將HADOOP_HOME=D:\programs\hadoop-2.3.0-cdh5.1.0添加到環境變量,而且修改path,添加以下內容:%HADOOP_HOME%\bin。改完後讓環境變量生效同時重啓eclipse

4、右鍵運行,第一次須要配置運行參數,以下:

hdfs://192.168.0.91:9000/input
hdfs://192.168.0.91:9000/output

運行成功後在hdfs中就有運行成功後的數據。

5、打包放到yarn集羣上運行,項目上右鍵,export->java->JAR file,只選擇代碼文件便可,上傳到master上,而後運行提交jar包命令,:

command:yarn jar newwordcount.jar /input /output

6、錯誤彙總

1.須要訪問hdfs等,拒絕當前window用戶訪問,denial,refuse等等拒絕問題,這個時候去調整下權限,由於hdfs下的文件目錄都是屬於某個用戶的,而別的用戶(window的用戶)沒有寫的權限,須要將程序訪問的目錄改爲可寫的權限,$HADOOP_HOME/bin/hadoop fs -chmod -R 777 /storm

參考:Eclipse調用Hadoop2.2運行MR程序

2. Exception in thread "main" java.lang.NullPointerException atjava.lang.ProcessBuilder.start(Unknown Source)

參考:解決Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 等一系列問題的問題2

可是不徹底能解決問題,1.須要使用hadoop2.6的hadoop.dll和winutils,因此須要到網上下hadoop2.6的hadoop.dll,而不是直接下hadoop2.2的hadoop.dll,不然會報下面這個錯誤。

UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray

2.修改path的環境變量以後,須要使環境變量當即生效:Windows不重啓就使環境變量修改生效

相關文章
相關標籤/搜索