Eclipse远程调试hadoop源码
来源:互联网 发布:后期软件培训 编辑:程序博客网 时间:2024/05/28 15:06
1. 修改对应调试端口
之前的一篇blog里讲述了hadoop单机版调试的方法,那种调试只限于单机运行hadoop命令而已,对于运行整个hadoop环境而言是不可取的,因为hadoop会开启多个java进程,如果统一为一个端口启动,则启动会报错说端口被占用,同时对于jdwp agent而言也只能加载一次,故调试时单机只能有一个java进程开启debug模式,其实这个也足够了。
通过分析hadoop的启动脚本不难发现,每个java进程的启动参数可以在hadoop-env.sh这个文件里传递进去,故为了增加调试选项可以在这个文件里增加如下几段:
Java代码
1.#HADOOP_NAMENODE_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,address=8788,server=y,suspend=y"
2.#HADOOP_SECONDARYNAMENODE_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,address=8789,server=y,suspend=y"
3.#HADOOP_DATANODE_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,address=8790,server=y,suspend=y"
4.#HADOOP_BALANCER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8791,server=y,suspend=y"
5.HADOOP_JOBTRACKER_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,address=8792,server=y,suspend=y"
6.#HADOOP_TASKTRACKER_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,address=8793,server=y,suspend=y"print?
这suspend=y是必须的,表示Child子进程启动后会等待远程的debug信息发送过来后再执行代码,因此在发送debug信息之前我们可以在eclipse中下断点,这一点很重要。
这里因为是单机运行一些java进程,故这里只保留一个进程开启debug模式,当有多个机器单独运行每个java进程时,可以按照功能来打开相对应的java debug模式。如jobtracker和tasktracker运行在不同机器,即可观察。
bin/start-all.sh
如果脚本运行成功,可以看到shell命令行终端显示如下信息:
Listening for tranport dt_socket ataddress:8792
这时候表示JobTracker成功处于监听状态。JobTracker将一直处于监听状态,直到收到debug确认信息。所以此处eclipse的监听调试端口还未建立。
但是此时jobtracker尚未启动。
注释:只有在第三步输入远程端口,点击“Debug”按钮,jobTracker才启动,所以在hadoop源码中添加断点,运行一个job,程序就会自动暂停到断点位置,接下来再详细的操作见第三步。
2.在eclipse里导入源码
新建Java工程。打开eclipse,进入eclipse界面,依次单击File——New——Java Project,并在弹出的对话框中取消选择“Use Defaultlocation”前面的勾号,然后选择hadoop安装目录的位置,默认情况下,工程名称与hadoop安装目录名称相同,可自行修改。
在下一个界面设置,将下方的 Default outputfolder由 .../bin更改为.../build/eclipse-classes(或其他),以免 eclipse自动清空 bin文件夹下手工编写的文件;点击 Finish按钮等待下载完成。此时会有很多文件标有红色叉号,属正常现象。
3. 配置eclipse来远程调试
启动eclipse,点击菜单的 Go to Run -> Debug Configurations在配置界面上找到Remote JavaApplication然后右键新建一个,并配置远程应用的链接信息(如对应Jobtracker的端口)
这里主要是填好主机名及对应打开调试的端口号。
最后一步点击 Apply保持配置然后点击Debug即可开始远程调试了
注意的是调试要选用Debug perspective。
4.设置一些断点,比如
远程调试JobTracker时,将断点设置在JobTracker.submitJob函数中。(左边双击代码JobTracker.java)
比如,
上传文件:hadoop fs –mkdirinput
Hadoop fs -put file1.txt input
运行wordcount例子:
Hadoop jar hadoop-example.jar wordcount inputoutput
运行过程中,因为设置了断点,会提示打开eclipse Debug perspective,可以看到程序中止的地方,可以查看相应文件夹下的变化,按F8可跳过断点继续执行程序。
参考另一篇文章,就会通过设置断点的方式,来观察hadoop的运行的轨迹。
- Eclipse远程调试hadoop源码
- eclipse hadoop远程调试
- eclipse远程调试hadoop
- [Hadoop] Eclipse 远程调试 Hadoop
- eclipse 远程调试hadoop代码
- eclipse远程调试hadoop程序
- 利用eclipse远程调试模式搭建一个调试hadoop源码的环境
- 在Eclipse中远程调试Hadoop
- eclipse远程方式调试hadoop-yarn
- Eclipse远程调试Hadoop接续上篇
- eclipse远程调试Tomcat, Hadoop集群等
- 在Eclipse中远程调试Hadoop
- hadoop学习(六)--------eclipse远程调试
- eclipse使用插件远程调试Hadoop
- CloudStack 4.3 源码部署+eclipse远程调试
- hadoop 2.7.3 源码分析(三):hadoop远程调试
- Hadoop学习笔记之在Eclipse中远程调试Hadoop
- Hadoop学习笔记之在Eclipse中远程调试Hadoop
- Linux 2.6 Alarm信号中断遇上函数阻塞
- Box2D基本元素简介 Box2D源码示例简介
- Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
- 第五周项目1-三角形类的构造函数(4)
- my 一路向 c 之rand
- Eclipse远程调试hadoop源码
- ubuntu编译linux内核出现 Unable to find the ncurses libraries or the required header files.
- Android
- poj 1961 kmp算法之next数组的意义应用
- 《火鸡总动员》观后感
- MH370 的伤痛
- 背景建模SACON
- 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
- Javascript 浮点运算问题分析与解决