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

Hadoop學習筆記(10) java

——搭建源碼學習環境 node

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

因此這裏,咱們得把這個調試環境搭建起來。Hadoop的主要代碼是用java編寫的,因此這裏就選用eclipse做爲環境。 sql

Hadoop目錄下,自己就能夠爲做eclipse的一個工程來操做,但這裏我不想,我想本身來建一個工程,而後把它的代碼本身添加進來。 apache

建立一普通的java工程: app

點下一步,輸入工程名:HadoopSrcStudy,而後再下一步 eclipse

而後一路下一步,再Finish完成: webapp

 

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

好了,進來了,但如今這三個文件夾還不能當成源碼進行編譯,因此咱們右健工程屬性: 函數

而後選中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函數入手。

相關文章
相關標籤/搜索