Hadoop debug 方法
做Hadoop开发,需要对hdfs,mapreduce组件等进行修改、测试,如果每次做修改后都打成jar包上传到服务器打log测试的话将非常麻烦和耗时的。所以如果能够通过eclipse进行远程调试将会非常方便与惬意的。
hadoop远程调试十分简单,只需要自己hack很少的代码就可以完成。步骤如下:
首先拷贝$HADOOP_HOME/bin/hadoop 到一个文件如$HADOOP_HOME/bin/hadoop-debug
在最后一行修改,原来的bash代码是
else
# run it
exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
fi
修改为
else
# run it
#exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
exec "$JAVA" -Xdebug -Xrunjdwp:transport=dt_socket,address=7777,server=y,suspend=y $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
fi
address后面是监听的地址,可以改为任意空闲地址。
启动十分简单,如想要调试DataNode代码,就启动$HADOOP_HOME/bin/hadoop-debug datanode
这时候会提示监听端口信息。
Warning: $HADOOP_HOME is deprecated.
Listening for transport dt_socket at address: 7777
在本地启动eclipse远程调试,如下图:
推荐阅读: