Hadoop學習筆記(10) ——搭建源碼學習環境


Hadoop學習筆記(10)

——搭建源碼學習環境

上一章中,我們對整個hadoop的目錄及源碼目錄有了一個初步的了解,接下來計划深入學習一下這頭神象作品了。但是看代碼用什么,難不成gedit?,單步調試呢? 看程序不能調那多痛苦啊,想看跟蹤一下變量,想看一下執行路徑都難。

所以這里,我們得把這個調試環境搭建起來。Hadoop的主要代碼是用java編寫的,所以這里就選用eclipse作為環境。

Hadoop目錄下,本身就可以為作eclipse的一個工程來操作,但這里我不想,我想自己來建一個工程,然后把它的代碼自己添加進來。

創建一普通的java工程:

點下一步,輸入工程名:HadoopSrcStudy,然后再下一步

然后一路下一步,再Finish完成:

 

接下來,添加源碼了,打開hadoop下面的src文件夾,復制哪些呢? 我們先學學核心的吧,core,hdfs,marped這三個目錄,復制到工程里面。(如何復制? 先在選中三個文件夾,然后回到eclipse中,選中HadoopSrcStudy工程,然后直接按一下ctrl+v)

好了,進來了,但現在這三個文件夾還不能當成源碼進行編譯,所以我們右健工程屬性:

然后選中Java Build Path,在右邊的tab頁選中Source,然后點Add Folder:

在彈出頁面中,選中core、hdfs、mapred三個目錄,然后點兩次OK,完成設置。

然后再看工程,這三個目錄已經跟src文件夾的圖標一樣了,所以里面的java程序也就當成了源碼,進行了編譯,但發現2K多個Error。怎么回事?難不成還要引用其他的源碼文件? 答案是少jar包。

所以我們先在源碼目錄下建一個jar的文件夾。然后將以下目錄下的jar文件都復制進來。

hadoop-0.20.2/build/ivy/lib/Hadoop/common/*.jar

hadoop-0.20.2/lib/jsp-2.1/*.jar

hadoop-0.20.2/lib/kfs-0.2.2.jar

hadoop-0.20.2/lib/hsqldb-1.8.0.10.jar

然后右健工程,選屬性頁,在BuildPath頁,選Libraiers:

點擊Add Jars:

選擇jar文件夾下所有的jar文件,然后點兩次OK。

這些發現bug立即減少:

但還是有,而且都只是這個RccTask文件里的,所以暫時先排掉吧,對着該文件右健菜單Build Path->Exclude即可。

好了,此時一個bug也沒有了。

然后將hadoop-0.20.2目錄下conf文件夾下的core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties這幾個文件,放在src目錄下,

將hadoop-0.20.2目錄下src文件夾下的,webapps復制到src目錄下。

在eclipse中,src目錄下建一個package,名為:org.apache.hadoop,然后將hadoop-0.20.2\build\src\org\apahe\hadoop\package-info.java文件,復制到該package下。目錄如下:

這樣源碼調試環境就OK了。

 

讓Hadoop在eclipse中運行起來

源碼已經加入,並且已經編譯通過了,接下來得在eclipse中跑一下,試下是否能正常跑起來。

這里我們嘗試,用命令行中執行namenode,然后用eclipse運行datanode,然后再開一個命令行,用fs命令,是否能查到之前的內容。

1.打開命令行,進入hadoop-0.20.2目錄,執行bin/hadoop namenode

2.在eclipse中,進入hdfs目錄,再進入org.apache.hadoop.hdfs.server.datanode目錄,打開DataNode.java文件,然后點上面的運行,然后就可以看到在eclipse中,正常的輸出信息,且沒有錯誤。該信息,可以在log文件夾下,找到datanode的日志,其內容是一樣的。 同時在前面的命令行窗體中,可以看到namenode程序中收到一個datanode的接入請求。

3.再打開一個命令行窗口,進入hadoop-0.20.2目錄bin/hadoop fs –ls,就可以看到輸出了文件列表。

4.然后再輸入命令bin/hadoop fs -cat out/* 就可以看到之前程序運行生成在out目錄下的數據了。

如果上面兩個命令都執行成功,說明namenode和在eclipse中運行的datanode都起作用了。可以再觀察下,當我們在執行cat命令時,在eclipse中的輸出框中,看到有新的響應輸出,說明它工作了。

同樣,我們還可以反過來,在eclipse中運行namenode,在命令行中運行datanode。同樣的效果。

為了可以看到更多的調試日志輸出,我們還可以打開src下的log4j.properties文件,在第二行中的INFO改成DEBUG,這樣輸出的內容會更詳細。

 

到此為止我們的源碼學習環境已經搭建好了,可以方便的在eclipse中調試hadoop代碼,甚至來修改它。

 

好了~~至此,第一季收工。 讓思維飛一會兒,等后面看了些hadoop源碼后,再來分享。 到時還會保持一向的處理方式:從簡單入手。 程序分析就會main函數入手。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM