跳转到主要内容

Hbase2 基于hdfs恢复数据及迁移

分类
故障描述

  某客户因为数据表数量过多,导致HBase Master无法初始化完成。根据日志判断为Meta错误。

故障分析

  客户频繁操作HBase Master导致混乱,加载失败。

处理过程

       1.判断客户hdfs数据正常,基于Hbase2特性,可以基于hdfs进行数据恢复
       2.停用hbase服务;
       3.备份或迁移hbase hdfs文件。例如如下

hdfs dfs -mv /hbase/data /hbase/data_1 //重命名

hdfs dfs -cp -p /hbase/data /hbase/data_1 //复制一份,客户涉及数据200T,采用重命名方式

        4.删除zk中数据

hbase zkcli

rmr /hbase-unsecure

        5.将备份或迁移的数据恢复。

hdfs dfs -mv /hbase/data_1 /hbase/data  //重命名回去,可以根据实际情况,仅复制部分数据。

        6.启动Hbase;登陆hbase Master查看状态是否正常。

        7.修复meta表

hbase hbck -j /root/hbase-operator-tools-1.2.0/hbase-hbck2/hbase-hbck2-1.2.0.jar addFsRegionsMissingInMeta 'FAULT' //引用hbck2,对FAULT命名空间的表进行修复。多个命名空间,建议多次执行。

        8.重启HBase Master;注意仅需对当前Master主机相对应服务重启,自动会选择其它主机为HBase Master;启动成功后,会提示大量的进入RIT状态。

        9.登陆HBase Master,查看RIT,获取RIT中Rgid;复制并保存到文件,例如0903rit。执行下面命令重新创建区域

hbase hbck -j /root/hbase-operator-tools-1.2.0/hbase-hbck2/hbase-hbck2-1.2.0.jar assigns -i /root/0903rit   //这里是引用的文件,可以选择单个rit。

       10.进入hbase shell,count查看表是否正常。

特别注意:如果没有namespace;可以在hbase shell启动好后确认表正常情况下,直接create_namespace即可。

建议/总结

  Hbase中Meta损坏是最常见的问题,采用此方法可以安全快速的恢复数据。此方法还可以用于数据迁移。