1、 利用eclipse远程调试模式搭建一个调试hadoop源码的环境,抓图证明搭建成功。
1) 软件准备:
从http://www.sparxsystems.cn/products/index.html下载EACN_Trial和EAEclipse_Integration
2) 安装上面两个软件,在安装EAEclipse_Integration的过程中有个过程需要选择你的eclipse的安装路径,注意一定要选择正确,当安装完成后会在ecliple的菜单栏上多了一个菜单,如下图所示:
3)Eclipse中hadoop插件安装在这里就不详细介绍了,新建一个Java Project:
4) 右键点击你新建项目的src目录,选择import,然后选择你的Hadoop源码包路径,如下图所示:
按照上面方法将mapred、core、tools等包含org的包都导进来,然后把hadoop目录下的lib包都导进项目里面来,最后结果如下图所示:
5) 在EA中新建一个项目,创建一个Class Model视图,右键点击Class Model视图,如下图所示:
点击上图的Options,如下所示,选择你的eclipse的路径:
6) 建立源码的类图,右键点击Class Model,选择扩展-与eclipse合并,如下图:
在上图中选择与eclipse合并后进入如下界面,我们以conf下的包为例将类导入EA中:
在上图中点击go后,在EA中生成如下图所示的类:
选择上图中的4个类,拖入左边界面,如下图所示:
选择连接,点击确定,如下图:
整个源码环境的建立、导入以及建立类图的过程完成,下面进行远程调试的环境搭建。
7) 修改$HADOOP_HOME/bin下的hadoop文件:
将
elif ["$COMMAND" = "namenode"]; then CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_OPTS"
改为:
elif [ "$COMMAND" = "namenode" ] ; then
CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
8) 启动hadoop:
9) 在eclipse源码中选择NameNode.java,右键点击,选择Debug AS》Debug Configurations 进入下图所示界面
在上图中选择Remote Java Application,点击新建,增加一个NameNodeDebug,具体配置如上图所示。点击Debug就可以进行调试了。
调试界面如下图所示: