在 Ubuntu 上恢复 HBase 数据的实用步骤
一、先判断场景与准备
cp -r /hbase/data /hbase/data_backup_$(date +%F_%T))。二、常见恢复路径
flush '<表名>' 与(可选)major_compact '<表名>',确保数据落盘一致;如未启用快照,先对表目录允许快照:hdfs dfsadmin -allowSnapshot /hbase/data/default/<表名>。hbase snapshot 'snap_<表名>', '<表名>'。hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snap_<表名> -copy-to hdfs://<namenode>:<port>/backup/snap_<表名>。hbase org.apache.hadoop.hbase.snapshot.ImportSnapshot -snapshot snap_<表名> -copy-from hdfs://<namenode>:<port>/backup/snap_<表名> -target <表名>。hbase hbck <表名>,应返回 Status: OK。create '<表名>', '<列族1>', '<列族2>'。hbase hbck -fixMeta <表名>、hbase hbck -fixAssignments <表名>;若仍有 region 重叠或不一致,可酌情执行 hbase hbck -fixHdfsOverlaps <表名> 后再修复与分配。hbase hbck <表名> 为 OK,并用 count '<表名>'、scan '<表名>', {LIMIT => 100} 抽样验证。hbase hbck <表名> 查看不一致项。hbase hbck -fixMeta <表名>、hbase hbck -fixAssignments <表名>;必要时再执行 hbase hbck -fixHdfsOverlaps <表名> 处理重叠。hbase hbck <表名> 返回 OK。stop-hbase.sh → start-hbase.sh,或单独重启 HMaster/RegionServer。tail -f /hbase/logs/hbase-*.log,修复配置或数据目录权限后再启。三、关键命令速查
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <快照名> -copy-to <HDFS目标路径>hbase org.apache.hadoop.hbase.snapshot.ImportSnapshot -snapshot <快照名> -copy-from <HDFS源路径> -target <表名>hbase hbck -fixMeta <表名>hbase hbck -fixAssignments <表名>hbase hbck -fixHdfsOverlaps <表名>hbase hbck -repair <表名>hdfs dfs -ls /hbase/.archive/default/<表名>hdfs dfs -mv /hbase/.archive/default/<表名>/<region>/<cf>/<hfile> /hbase/data/default/<表名>/<region>/<cf>/hdfs dfs -chown -R hbase:hbase /hbase/data/default/<表名>hbase hbck <表名>(期望 Status: OK)count '<表名>'、scan '<表名>', {LIMIT => 100}/user/$USER/.Trash/,参数 fs.trash.interval(分钟,0 关闭)。四、注意事项与最佳实践
hbase hbck 与业务侧抽样校验(如 count/scan)确认Region 上线与数据一致性。