调试Hadoop源代码

个人博客地址:调试Hadoop源代码 | 一张假钞的真实世界

Hadoop版本

Hadoop 2.7.3

调试模式下启动Hadoop NameNode

${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中设置NameNode启动的JVM参数,如下:

复制代码
export HADOOP_NAMENODE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8788,server=y,suspend=y"
export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS"

使用脚本${HADOOP_HOME}/sbin/start-dfs.sh启动HDFS,如果有以下提示信息则说明调试模式下启动NameNode成功:

复制代码
Listening for transport dt_socket at address: 8788

此时,如果执行jps查看java进程信息会有以下信息,是因为NameNode进程被挂起并处于监听状态,直到收到debug确认信息。

复制代码
$ jps
10638 Jps
10438 -- main class information unavailable
2171 
10508 DataNode

设置断点

找到hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java并在main函数中设置断点,如下图:

在Eclipse中调试

NameNode.java代码中点击右键,在弹出的菜单中选择Debug As -> Debug Configurations...,在弹出的对话框中双击Remote Java Application,配置内容如图:

配置完成后点击Debug按钮进入调试界面。

相关推荐
百胜软件@百胜软件3 分钟前
百胜软件SenClaw胜券助手正式发布:AI让数据“开口说话”,随时赋能零售运营
大数据·人工智能·零售
HZZD_HZZD18 分钟前
商业综合体分户计量与能源计费:业态差异、公区分摊与转供电合规
大数据·人工智能·能源
金立基胶粘21 分钟前
封口胶在包装行业中的重要性及其与糊盒胶的结合
大数据·安全
2601_9622029841 分钟前
首衡集配用万象,企业竞争力不断增强
大数据·人工智能
北京晶数信息科技1 小时前
加油站成品油智慧监管云平台成品油流通数智化监管平台加油机数据采集设备交易即开票全链路技术实现方案:技术拆解、架构设计与落地实践
大数据·人工智能
知了一笑1 小时前
职场丨岗位减少,职责增加
大数据·人工智能·职场·产品·业务
千桐科技2 小时前
qData 开源版数据中台 v1.6.2 上线:修复数据连接、元数据与项目管理等多项问题
大数据·开源·数据治理·数据可视化·数据中台·元数据·qdata
AC赳赳老秦2 小时前
环保监测公开数据应用:OpenClaw 抓取空气与水质公开监测数据,开展区域环境质量趋势分析
大数据·数据库·人工智能·python·php·deepseek·openclaw
晓窗科技2 小时前
AI基座哪家服务好
大数据·人工智能·python
2603_965148113 小时前
宠物经济崛起:宠物食品用品API选品指南
大数据·服务器·人工智能·python·生活·宠物