一. 先说说如何进行简单的调试
1. 修改hadoop-env.sh
增加如下参数:
-Xdebug -Xrunjdwp:transport=dt_socket,address=8849,server=y,suspend=n
比如要调试NameNode,将其中的HADOOP_NAMENODE_OPTS修改如下:
#export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
export HADOOP_NAMENODE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8849,server=y,suspend=n"
参数含义:
端口8849启动一个server socket并通过Java Debug Wire Protocol传递调试信息。
suspend=n表示客户端(eclipse)没有连上时不需要挂起,即没有开始调试时该进程照常运行。
2. 启动eclipse,新建一个Java Project (如果原先已经导入了源码项目,可以就在那之上进行,但是并无区别)
3. 选择“Run -> Debug Configurations -> Remote Java Application"
4. 填上该填的,然后就是host和port了,host就是你所要调试的节点的IP,而port就是上述所添加的参数里头的8849.
然后就可以调试了,如果suspend=n,可以自己去设置断点。
二. 如何导入源代码到eclipse中进行阅读
1. 安装jdk,ant,并配置好环境变量,这个就不多说了了。
2. 下载源码包,如我的就是wget http://archive.apache.org/dist/hadoop/core/hadoop-0.20.205.0/hadoop-0.20.205.0.tar.gz
3. 解压到某个地方,也可以直接在workspace下,如/home/cxz/workspace/hadoop_0.20.205.0_src
4. 在eclipse新建一个java project,如hadoop_0.20.205.0_src,项目的目录就选择刚才解压的hadoop src
5. 排除各种依赖错误
比如需要依赖ant.jar, eclipse plugings下的好多包等
由于我只是看看,并不要编译通过,没有搞定所有的问题。