调试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按钮进入调试界面。

相关推荐
weixin19970108016几秒前
“迷你京东”全栈架构设计与实现
java·大数据·python·数据库架构
菜鸡儿齐4 分钟前
MapReduce-源码学习
大数据·学习·mapreduce
腾视科技TENSORTEC31 分钟前
安全驾驶 智在掌控|腾视科技ES06终端,为车辆运营赋能
大数据·人工智能·科技·安全·ai·车载系统·车载监控
Elastic 中国社区官方博客40 分钟前
测试 Elasticsearch,现在变得更简单了
大数据·运维·elasticsearch·搜索引擎·全文检索
黎阳之光41 分钟前
十五五智赋新程 黎阳之光以AI硬核技术筑造产业数智底座
大数据·人工智能·算法·安全·数字孪生
云蝠呼叫大模型联络中心1 小时前
零售行业智能客服与客户数据分析:技术架构与实战案例
大数据·人工智能·架构·数据分析·零售·#智能外呼合规·#云蝠智能
逸Y 仙X1 小时前
文章七:ElasticSearch索引字段类型
java·大数据·elasticsearch·搜索引擎·全文检索
DX_水位流量监测1 小时前
德希科技在线水质浮标站
大数据·水质监测·水质传感器·水质厂家·在线水质浮标站·水质监测系统·水文水利
D愿你归来仍是少年1 小时前
Apache Spark 第五章:Spark SQL 与 DataFrame
大数据·spark
敲上瘾1 小时前
位图与布隆过滤器:原理、实现与海量数据处理方案
大数据·数据结构·算法·位图·布隆过滤器