Eclipse远程调试HDP源代码
使用的是自己编译的HDP2.3.0的源代码编译的集群,此文介绍如何使用Eclipse远程调试Hadoop内核源代码,以调试namenode为例进行介绍。
在/usr/hdp/2.3.0.0-2557/hadoop-hdfs/bin/hdfs.distro 目录下,添加如下内容,这个内容是让namenode在启动的时候,打开调试模式:

图片中的代码是(不要写错了):
HADOOP_OPTS="$HADOOP_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n"
然后使用脚本启动namenode进程:
[root@n124 sbin]# ./hadoop-daemon.sh --script hdfs start namenode
starting namenode, logging to /var/log/hadoop/root/hadoop-root-namenode-n124.ccsdp.com.out
Listening for transport dt_socket at address: 8002
[root@n124 sbin]# jps
7635 NameNode
7744 Jps
1944 AmbariServer
[root@n124 sbin]# pwd
/usr/hdp/2.3.0.0-2557/hadoop/sbin
这样设置以后,NameNode这个进程会监听两个端口,其中一个就是8002,如下图:

Eclipse中的设置如下,Debug-> Debug configurations->Remote Java Application


在eclipse中,如下位置打一个端点:

设置好Eclipse后,在shell中,使用命令行在hdfs中创建一个文件夹:
[root@n124 sbin]# hadoop fs -mkdir /user/root/zhangchao
可以看到Eclipse中的代码进入调试模式,然后就可以一步一步的进行调试,查看到每一步运行的情况:

调试的过程中,将Eclipse的进程优先级设置成Very high,可以让Eclipse的反映快不少,如果用默认的优先级,Eclipse将会非常卡:

在调试的过程中,发现ipc/Server.java这个文件中的,run方法,会不断的监听来自datanode的心跳数据,这个地方如果打上端点,会不断的被中断:

在Shell上,创建一个目录 hadoop fs -mkdir /user/zhangchao/32,然后可以在调试的过程中,发现ClientProtocol.mkdirs从客户端传递到server:

Eclipse远程调试HDP源代码的更多相关文章
- eclipse远程调试Hadoop
环境需求: 系统:window 10 eclipse版本:Mars Hadoop版本:2.6.0 资源需求:解压后的Hadoop-2.6.0,原压缩包自行下载:下载地址 丑话前头说: 以下的操作中,e ...
- Eclipse远程调试(远程服务器端监听)
前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动. 远程服务器端 服务器端配置eclips ...
- Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案
欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...
- Eclipse远程调试+FTPClient在jdk6以上写法不兼容问题的排查
业务场景: 应业务新需求的UAT测试,需要部署一份新tomcat到测试环境.新环境正常启动并运行了一天,没太大差错.但今天发现原本在另一个老的tomcat下运行的好好的FTP上传文件模块突然出了问题. ...
- Eclipse远程调试Tomcat
1.Linux服务器中在Tomcat的catalina.sh文件添加如下内容: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,ad ...
- Linux下使用Eclipse 远程调试
1 开启端口 修改/apache-tomcat-7.0.40/bin/catalina.sh 在合适的位置(请自行判断,只要有JAVA_OPTS的设定前后即可)插入下面的设定:UI_DEBUG=&qu ...
- Eclipse远程调试Java代码的三种方法
Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...
- eclipse远程调试Tomcat方法(测试成功并且说说遇到的坑)
转自:http://blog.csdn.net/afgasdg/article/details/9236877 PS:文中容易引起歧义的地方已经做了修改:另外,本人参照以下步骤操作,结果无法调试,后来 ...
- 使用 Eclipse 远程调试 Java 应用程序
Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...
随机推荐
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- Python成长笔记 - 基础篇 (三)python列表元组、字典、集合
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...
- 技术文档--svn
1.什么是版本控制,说出常见的版本控制系统及其区别版本控制它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编 ...
- don't forget the bigger picture
Imagine a circle that contains all of human knowledge: By the time you finish elementary school, you ...
- 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug
开篇介绍 前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值.我记得以前在 2008 的版本中为了弄明白这个配 ...
- php后台开发(一)hello world
php后台开发(一)hello world 环境安装 开发环境为Ubuntu 12.04,选择linux+apache+php的开发环境 安装 apache2 sudo apt-get install ...
- [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)
Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...
- SQL order by的用法
首先,order by是用来写在where之后,给多个字段来排序的一个DQL查询语句. 其次,order by写法: 1. select 字段列表/* from 表名 where 条件 order ...
- Emmet语法大全手册
这是基于官方手册整理制作的,因为那个手册网页打开很慢,所以就整理在这里了.以备不时之需. Syntax Child: > nav>ul>li <nav> <ul ...
- atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg 1. 建立list 1 2. 配置xml 1 3. Hibernate中Set和L ...