|
了解一個系統(tǒng)的內(nèi)部,我覺得最好的辦法只有兩個:
1. 找系統(tǒng)的開發(fā)設(shè)計者仔仔細細的問,
2. 自己跟蹤調(diào)試系統(tǒng)。
估計要找到 cutting 詳細聊不太可能,那只有第二個辦法可以采用了,呵呵。而且當 hadoop 出現(xiàn)一些莫名問題的時候,跟蹤調(diào)試程序也是最后的無奈選擇。
工欲善其事,必先利其器。我選擇的工具和環(huán)境配置如下:
1. 開發(fā)機 OS linux (X 選擇 gnome 或者 kde 都可以 )
2. 遠程控制軟件 tightvnc 客戶端和服務(wù)器端
3. 開發(fā)調(diào)試 IDE 工具 Eclipse 和 vim
其實要調(diào)試 hadoop 分布式程序和進行 java 遠程調(diào)試是一樣的,為什么呢?因為他們就是一回事兒,哈哈!
1. 啟動 Eclipse ,將 hadoop 程序裝載到工程里面
2. 修改 bin/hadoop 代碼加入 java 遠程調(diào)試選項:
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_TASKTRACKER_OPTS
-agentlib:jdwp=transport=dt_socket,address=xxxx,server=y,suspend=y"
假設(shè)我們要調(diào)試 jobtracker 的代碼,我們將 bin/hadoop 代碼修改如下 :
elif [ "$COMMAND" = "tasktracker" ] ; then
CLASS=org.apache.hadoop.mapred.TaskTracker
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_TASKTRACKER_OPTS -agentlib:jdwp=transport=dt_socket, address=8083, server=y, suspend=y"
3. 啟動 hadoop
4. Eclipse 里面跟蹤調(diào)試
a) 在 Debug configuration 里面新建一個 Java Remote Application
b) 設(shè)置斷點
c) 啟動分布式任務(wù)
d) 這個時候任務(wù)就會你設(shè)置的斷點處,停下來讓你進行接下來的調(diào)試跟蹤
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/hitzhang/archive/2009/08/03/4403628.aspx |
|
|
來自: 風(fēng)自向前 > 《我的圖書館》