某客户因为数据表数量过多,导致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损坏是最常见的问题,采用此方法可以安全快速的恢复数据。此方法还可以用于数据迁移。