在进行任何恢复操作前,必须先备份当前HBase数据目录(如/hbase/data或/var/lib/hbase),防止操作失误导致二次数据丢失。
确认故障类型是恢复的关键,常见故障包括:
hbase-site.xml中hbase.rootdir路径错误,导致集群无法启动。start-hbase.sh启动HBase服务,观察是否能正常运行(可通过jps命令检查HMaster、RegionServer进程是否启动)。/hbase/logs或/var/log/hbase),重点分析hbase-username-master-*.log(HMaster日志)和hbase-username-regionserver-*.log(RegionServer日志),获取具体错误信息(如Zookeeper连接失败、端口冲突、配置缺失等)。根据故障类型选择对应恢复步骤:
zkServer.sh status检查每个节点是否为leader或follower,确保多数节点正常);stop-hbase.sh停止集群,再执行start-hbase.sh启动HMaster。stop-hbase.sh停止集群,再执行start-hbase.sh启动RegionServer(HBase会自动重新分配宕机的Region到其他RegionServer)。hbck工具修复一致性:执行/hbase/bin/hbck -repair,工具会自动检测并修复Region分配、HFile corruption等问题;hbck无法修复,需从备份恢复数据(见“使用备份工具恢复”部分)。hbase-site.xml中关键配置错误(如hbase.rootdir指向不存在的路径、zookeeper.znode.parent路径错误)。hbase-site.xml(通常位于/etc/hbase/conf),修正错误配置(如将hbase.rootdir改为正确的HDFS路径:hdfs://namenode:9000/hbase);若提前创建了HBase快照,可通过以下步骤快速恢复:
create_snapshot '表名', '快照名'(如create_snapshot 'user_table', 'user_snapshot_2025')。stop-hbase.sh停止集群。hadoop fs -get hdfs://namenode:9000/hbase/data/hbase/.archive/快照名 /path/to/hbase/data。start-hbase.sh启动集群,进入HBase shell执行restore_snapshot '快照名'。若数据文件损坏但WAL日志完整,可通过重放WAL日志恢复数据:
hbase org.apache.hadoop.hbase.wal.WALManager -files -logs,查看WAL文件是否存在且未损坏。/hbase/.logs或HDFS的/hbase/data/hbase/.logs),执行hadoop fs -get hdfs://namenode:9000/hbase/.logs/WALs/regionserver_hostname/WAL_file /path/to/hbase/.logs/。若提前使用HBase自带的backup命令创建了备份,可通过以下步骤恢复:
hbase backup create full /path/to/backup(如hbase backup create full /hbase/backup_202510)。hbase backup list,确认备份是否存在及状态(如COMPLETED)。hbase backup restore /path/to/backup,恢复指定备份的数据。status 'simple',确认集群状态为RUNNING。scan '表名',检查数据是否恢复完整(如行数、字段值是否与备份前一致)。hbase backup命令配置定时任务),或手动创建每周全量备份+每日增量备份;