1、 利用eclipse遠程調試模式搭建一個調試hadoop源碼的環境,抓圖證明搭建成功。
1) 軟件準備:
從http://www.sparxsystems.cn/products/index.html下載EACN_Trial和EAEclipse_Integration
2) 安裝上面兩個軟件,在安裝EAEclipse_Integration的過程中有個過程需要選擇你的eclipse的安裝路徑,注意一定要選擇正確,當安裝完成後會在ecliple的菜單欄上多了一個菜單,如下圖所示:
3)Eclipse中hadoop插件安裝在這裏就不詳細介紹了,新建一個Java Project:
4) 右鍵點擊你新建項目的src目錄,選擇import,然後選擇你的Hadoop源碼包路徑,如下圖所示:
按照上面方法將mapred、core、tools等包含org的包都導進來,然後把hadoop目錄下的lib包都導進項目裏面來,最後結果如下圖所示:
5) 在EA中新建一個項目,創建一個Class Model視圖,右鍵點擊Class Model視圖,如下圖所示:
點擊上圖的Options,如下所示,選擇你的eclipse的路徑:
6) 建立源碼的類圖,右鍵點擊Class Model,選擇擴展-與eclipse合併,如下圖:
在上圖中選擇與eclipse合併後進入如下界面,我們以conf下的包爲例將類導入EA中:
在上圖中點擊go後,在EA中生成如下圖所示的類:
選擇上圖中的4個類,拖入左邊界面,如下圖所示:
選擇連接,點擊確定,如下圖:
整個源碼環境的建立、導入以及建立類圖的過程完成,下面進行遠程調試的環境搭建。
7) 修改$HADOOP_HOME/bin下的hadoop文件:
將
elif ["$COMMAND" = "namenode"]; then CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_OPTS"
改爲:
elif [ "$COMMAND" = "namenode" ] ; then
CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
8) 啓動hadoop:
9) 在eclipse源碼中選擇NameNode.java,右鍵點擊,選擇Debug AS》Debug Configurations
進入下圖所示界面
在上圖中選擇Remote Java Application,點擊新建,增加一個NameNodeDebug,具體配置如上圖所示。點擊Debug就可以進行調試了。
調試界面如下圖所示: