软件工程学习日志2025.9.23

我的 HBase 故障排查日记:从绝望到成功的一天

今天是我与 HBase 斗争的一天,也是一次从挫折到突破的技术之旅。早上当我尝试启动 HBase 时,遭遇了一系列令人困惑的问题,最终通过系统性的排查找到了解决方案。

问题初现

一切始于一个简单的命令:start-hbase.sh。终端显示服务正在启动,但 jps 检查时却发现只有 HQuorumPeer 在运行,关键的 HMaster 和 HRegionServer 进程神秘失踪。更奇怪的是,日志文件只显示了系统资源限制信息,完全没有 HBase 自身的启动日志。

排查过程

我首先检查了基本的配置:
• 确认 Java 环境正确(Java 8)

• 验证 HDFS 正常运行

• 检查 ZooKeeper 状态正常

但问题依然存在。于是我开始深入排查:

第一轮尝试:直接运行 bin/hbase master start,但只看到使用说明,没有实际启动。

第二轮尝试:检查类路径,发现缺少关键依赖。手动添加了 htrace-core 和其他必要库。

第三轮尝试:解决了 SLF4J 绑定冲突,移除了 Hadoop 中的重复绑定。

突破时刻

真正的突破来自当我决定在前台手动启动 HMaster 并捕获详细输出:
bin/hbase master start 2>&1 | tee /tmp/hmaster-debug.log

通过分析实时输出,我发现了一系列依赖缺失和配置问题。最终,通过以下步骤解决了问题:

  1. 解决依赖冲突:移除 Hadoop 中的 slf4j-reload4j,保留 HBase 的 slf4j-log4j12
  2. 添加缺失依赖:手动下载并添加 htrace-core、commons-configuration 等必要库
  3. 修复权限问题:确保日志目录有正确权限
  4. 清理环境:重置 ZooKeeper 和 HDFS 中的 HBase 数据

成功时刻

经过多次尝试,终于看到了成功的迹象:
• HMaster 和 HRegionServer 进程出现在 jps 输出中

• HBase Shell 能够正常连接并执行命令

• Web UI 可以正常访问

posted @ 2025-09-23 20:36  仙人兵马俑  阅读(10)  评论(0)    收藏  举报