读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--
通过修改Hadoop脚本,实现自动化远程调试。根据需要调试的组件,如DataNode或NameNode,在特定文件中记录,即可自动开启JDWP调试选项。
628

被折叠的 条评论
为什么被折叠?



