读hadoop源代码时,经常需要调试源代码。hadoop几乎所有的进程的启动最终全部依靠$HADOOP_HOME/bin/hadoop 脚本实现,开始就简单的在需要的地方添加JDWP的debug选项,做的多了,感觉不够自动化,简单修改了一下hadoop这个脚本,让自动化远程调试飞!
修改的脚本如下:
在$HADOOP_HOME/bin/hadoop中后添加:
在$HADOOP_HOME/bin/hadoop中246行后添加( # cygwin path translation前):
这样,hadoop脚本会根据COMMAND和$HADOOP_HOME/bin/hadoop.debug 内容决定是否开启调试。
比如,想调试datanode,执行echo datanode > $HADOOP_HOME/bin/hadoop.debug
启动hadoop时,仅仅datanode会开启remote debug
console显示:
想开启namenode等调试,仅仅需要echo 你想调试的command > $HADOOP_HOME/bin/hadoop.debug
hadoop命令支持的所有COMMAND都可以轻松开启调试:
附hadoop所有命令:
--EOF--