当前位置: 首页 > article >正文

调试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函数中设置断点,如下图:

NameNode Breakpoints

在Eclipse中调试

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

Remote Java Application Debug Configuration

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


http://www.kler.cn/a/511338.html

相关文章:

  • 使用SIPP发起媒体流性能测试详解
  • SVG(Scalable Vector Graphics)全面解析
  • go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
  • “libcudart,so.1 1.0“ loss解决方案
  • Spring Security(maven项目) 3.0.2.5版本中改
  • 前端项目搭建和基础配置
  • 020:为什么 Resnet 如此重要?
  • K8S 容器重启策略
  • C#中如何使用异步编程
  • Mysql--实战篇--@Transactional失效场景及避免策略(@Transactional实现原理,失效场景,内部调用问题等)
  • 深度学习 DAY1:RNN 神经网络及其变体网络(LSTM、GRU)
  • Spring AI入门示例HelloWorld
  • 基于微信小程序的购物系统设计与实现(LW+源码+讲解)
  • 【江西新能源科技职业学院主办 | JPCS(ISSN: 1742-6588)出版,快速见刊检索】2025年可再生能源与节能国际会议(REEC 2025)
  • Windows中安装RabbitMQ
  • TrueNas Webui页面自定义
  • 2024年度总结:从后端Java到全栈成长的蜕变
  • python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
  • 如何优化前端性能,减少页面加载时间?
  • 解决 IntelliJ IDEA 项目包后出现“% classes”和“% lines covered”的问题
  • 在 Ubuntu 上安装 Nginx 的详细指南
  • 智能阅读时代:基于NLP的自动新闻摘要技术解析
  • 【VRChat · 改模】Unity工程导入人物模型;并添加着色器教程;
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证
  • 论文阅读(一):下一代基因组学和遗传学的概率图模型
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证。