Debian 上 HBase 故障恢复实战指南
一 快速判断与恢复流程
status 'detailed',确认 HMaster 与 RegionServer 是否在线,是否有节点 DOWN。hdfs fsck /,确认 HDFS 健康、块是否缺失或损坏。describe 'your_table',获取 Region 名称。assign 'region_name' 触发分配;必要时重启相关进程或整集群(先停后启)。status 'detailed' 与简单读写验证,确认恢复完成。二 常见故障与修复对照表
| 故障场景 | 典型现象 | 修复要点 |
|---|---|---|
| RegionServer 宕机 | 进程异常退出,日志出现 ABORTING region server 或 long GC pause | 调整 HBASE_HEAPSIZE、优化 GC(如 G1GC);检查磁盘 I/O;必要时滚动重启异常 RS |
| Region 分配异常 | hbase hbck 报 Region not deployed / should not be deployed |
依次执行 hbase hbck -fixMeta 与 hbase hbck -fixAssignments 修复元数据与分配 |
| Region 链空洞 | hbase hbck 报 There is a hole in the region chain |
先停写;在 HDFS 补齐缺失的 .regioninfo;执行 hbase hbck -fixHdfsHoles;仍失败则备份后重建表 |
| HBase 启动失败 | HMaster/RegionServer 无法启动,提示内存不足或端口占用 | 调整堆与内存参数;确认 ZooKeeper/HDFS 已启动;排查端口占用 |
| 一致性/完整性异常 | hbase hbck 显示 Found inconsistency |
停止 HBase;清理 ZooKeeper 中损坏的 ACL 表信息;重启后用 hbck -fix 系列修复 |
| 数据损坏或断电后异常 | 读写失败、META 异常 | 先 hdfs fsck / 判定损坏范围;必要时停集群;修复 .META. 与 Region 分配;再启动集群验证 |
以上为生产中最常见的故障模式与处置路径,优先使用 hbck 系列工具修复元数据与分配一致性,再考虑重启与重建。
三 标准恢复操作清单
distcp 或快照),避免修复过程二次损伤。$HBASE_HOME/bin/stop-hbase.sh → $HBASE_HOME/bin/start-hbase.sh,启动后用 status 'verbose' 验证。assign 'region_name',观察 Master 日志与 UI 分配是否完成。hbase hbck -fixMeta → hbase hbck -fixAssignments;若存在空洞或链断裂,按“先停写 → 补齐 .regioninfo → hbase hbck -fixHdfsHoles”的顺序处理。status 'detailed'、简单 get/scan 验证业务可用性,并持续观察 HMaster/RegionServer 日志。四 备份与高可用建议