hadoop現在火的一發不可收拾,越來越多的人想了解hadoop,但是hadoop跟我們以前的項目不大一樣,很多人不知道從何入手,現在,教大家如何進行hadoop開發的環境搭建,然後進行debug調試源碼.以便於未來的學習和工作,(以下步驟up主親測成功,若有任何問題可以在羣裏發文,解決之後補充進來,當然,up主也是剛出道的四好青年,若有理解不當,請大家多多指教~)
資料下載 鏈接:http://pan.baidu.com/s/1eQJd7W2 密碼:ksjy
1、本文檔前面部分配置參照羣主的(塵事隨緣) ,切記一切在linux下開發,想在win開發hadoop的就別往下看了.血淚史告訴你這簡直太難了!
2、首先查看包裏的附件
hadoop2.7的源碼,hadoop-2.7.0-src.tar.gz(自己要哪個版本自己找 http://archive.apache.org/dist/)
jdk-7u71-linux-x64.gz(自己去下)
protobuf-2.5.0.tar.gz(其他版本不可以,一定要2.5)
apache-maven-3.3.3-bin.zip
3、安裝軟件
配置系統環境
vi /etc/profile
配置JDK
export PATH
export JAVA_HOME=/opt/jdk1.7
export PATH=$PATH:$JAVA_HOME/bin
配置MVN(mvn用我的,已經設置好了國內鏡像)
export M2_HOME=/opt/maven3.1.1
export PATH=$PATH:$MA2_HOME/bin (中間是冒號,別二了)
別忘記source /etc/profile
然後mvn 可以查看是否安裝好 java可以看java環境
4.安裝需要組件 (別求快,切記試一次)
yum install gcc
yum install gcc-c++
yum install make
yum install cmake
yum install openssl-devel
yum install ncurses-devel
5、安裝protoc(包裏有)
解壓縮,我的都是zip自己解吧
cd protobuf-2.5.0
./configure --prefix=/opt/protoc/
sudo make clean
make && make install
6、進入hadoop-2.6.0-src
cd hadoop-maven-plugins
mvn install 編譯一下,生成咱們的protocol文件
7、進入eclipse 設置eclipse maven
更改eclipse的java路徑 和maven屬性 -Dmaven.multiModuleProjectDirectory=$M2_HOME
8.導入我們的maven項目(hadoop是基於模塊開發的 ,我們導入自己模塊就行啦 我這裏使用
hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core)
好了導入項目之後本來應該maven install的 但是pom文件是紅色的,我們先解決pom文件
這裏會有紅色的的.因爲這是protocol生成的插件..我們前期maven install的時候已經生成了這些文件了,如果需要自己修改protocol內容,請自行參悟
選擇 第2個XX make…….expermetal 忽略即可
parent是紅的,,不管他,無視!..
然後maven install還是會報錯 沒有javatools
我們自己加入(記住這裏的加入的這個我們生成jar包的時候要把它給去掉,這裏加入是爲了給我們開發的,不然…後果XX&*@)
9.然後maven install 發現成功了, 測試也通過了 ,證明我們成功能開發了,此時pom有個XX是parent的,,如果你有強迫症可以給他註釋了….
我們先測試下我們的東西能不能用…
在maper裏面的run方法我們打個樁..
10.打包
寫好保存之後要如何把它變成一個jar包呢
1.mvn好菜- .- 我只能CD進去了 ….cd到POM文件的這裏…hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core
2.mvn compile 編譯文件
3.mvn package 打包
4.cd target 發現我們包有 了
11.測試 接下來我們要測試我們的這個包到底能不能用!!! 因爲我這個是MR的,可以直接本地測試我就用插件測試了
1.我的測試環境選擇在了本地的mr插件測試(插件怎麼用不屬於我們的討論範圍)
2.修改pom文件 因爲hadoop的包有好多,但是你需要的知道需要什麼包,然後在pom文件中刪除自己的製作的包,再導入我們自己編譯的包就OK啦 我的pom文件在文件夾中, 這個pom文件是刪除maven倉庫的 mapreduce-client-core包了的,你自己加入就行了 給大家做參考
3.run一個mapreduce.可以看到結果.
這就說明我們二次開發已經完全成功了,此時這個包放到我們集羣裏面替換以前的包也是一樣完全可以使用了,當然建議我們先單元測試一下(單元測試在源碼裏面,每個模塊都有,我們模仿就行了!)
如果想直接更改並調試,可以嘗試把2個項目關聯起來.就可以直接調試代碼而不用打包了.具體的關聯項目自己百度