在調研JobTracker等異常問題時常常須要遠程debug以實現單步跟蹤。相對於打印日誌,遠程調試更方面更快捷,信息也更全面。這裏列出遠程調試的基本步驟。 java
一、配置jvm選項啓用遠程debug eclipse
Hadoop的全部deamon啓動都是bin/hadoop腳本實現的,該腳本最後一行會執行java命令來啓動JVM進程。所以要啓用遠程debug,只須要修改該腳本最後一行便可。 jvm
修改前最後一行以下: socket
exec "$JAVA" $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@" oop
修改以後最後一行以下: 字體
exec "$JAVA" -Xdebug -Xrunjdwp:transport=dt_socket,address=50010,server=y,suspend=n $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@" spa
其中加粗字體部分爲新增的jvm參數。 debug
這些參數的含義是在端口50070啓動一個server socket並經過Java Debug Wire Protocol (jdwp)傳遞調試信息。suspend=n表示客戶端(eclipse)沒有連上時不須要掛起,即沒有開始調試時該進程照常運行。 調試
須要注意的是這裏的端口號必定要是空閒的且對外開放的。一般生產機器只開通了少許端口。 日誌
二、配置eclipse來遠程調試
a、啓動eclipse
b、點擊菜單的 Go to Run -> Debug Configurations
c、在配置界面上找到Remote Java Application而後右鍵新建一個
d、配置遠程應用的連接信息
這裏主要是填好主機名及端口號。
f、最後一步點擊 Apply保持配置而後點擊Debug便可開始遠程調試了