成功搭建了hadoop運行環境並運行了wordcount,其實是完成了由咱們給定輸入和輸出的路徑,運行hadoop提供的示例中編譯好的程序實現的,但真正的開發過程當中,咱們須要本身編寫java代碼,編譯、打包才能在hadoop上運行,所以在這一次,咱們利用hadoop提供的WordCount.java源碼,在Linux下手工編譯、打包,最後調用、運行,爲進一步從事hadoop程序開發打下基礎。 java
1 咱們須要找到WordCount.java: apache
hadoop的源碼咱們能夠在http://mirror.esocc.com/apache/hadoop/common/stable/ 下載到,解壓,在hadoop-2.7.1-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/dadoop/examples下找到,其中還包含許多示例代碼,有空能夠研究下。 oop
2 做者用戶名叫sr,在sr目錄下新建wordcount_01文件夾,內部再建立src和classes兩個文件夾,分別存放.java和編譯後的.class文件。將找到的WordCount.java文件放入src中,打開WordCount.java,我羞愧的將包名改爲了package com.sr.hadoop,有點很差意思... spa
3 「cd ~/wordcount_01」 進入wordcount_01文件夾 hadoop
4 「javac -classpath /home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/common/hadoop-common-2.7.1.jar:/home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/common/lib/commons-cli-1.2.jar:/home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.1.jar -d ./classes/ ./src/*.java」 開發
這步比較關鍵,做用是用hadoop安裝環境下hadoop-common-2.7.1.jar、commons-cli-1.2.jar、hadoop-mapreduce-client-core-2.7.1.jar三個庫文件,編譯src中全部的.java文件(咱們也能夠寫成WordCount.java)。-classpath後接着3個絕對路徑,是做者電腦上3個庫文件的所在位置,絕對路徑用:分割;-d後面跟着的是編譯後存放路徑和源路徑。執行後就會發現classes下生成了三級文件目錄,裏面有編譯好的.class文件,並且你會發現,對於.java中的每個類,都有對應的文件生成。 get
5 「jar -cvf Srwordcount.jar -C ./classes/ .」將編譯好的 class 文件打包成 Jar 包,打包後的Srwordcount會出如今wordcount_01目錄中,只有打包後的.class文件才能在hadoop下運行。 input
6 運行Srwordcount:注意需先cd 到你本身的hadoop環境下,個人是「cd ~/usr/hadoop/hadoop-2.7.1」,請確保hadoop啓動,input中放置了須要運行的文本文件,同時沒有output文件夾,由於hadoop爲防止運行結果發生覆蓋,不會向已有的文件夾下寫入數據。以上任何一步有問題,請查看個人上一篇博客。 源碼
「bin/hadoop jar /home/sr/wordcount_01/Srwordcount.jar com.sr.hadoop.WordCount /input /output」即將input中的內容用打包好的Srwordcount.jar運行,放入output中。請注意com.sr.hadoop.WordCount是調用三層目錄下的WordCount.class,在第2步中我改動了包名。 博客