某客戶因?yàn)閿?shù)據(jù)表數(shù)量過多,導(dǎo)致HBase Master無法初始化完成。根據(jù)日志判斷為Meta錯(cuò)誤。
客戶頻繁操作HBase Master導(dǎo)致混亂,加載失敗。
1.判斷客戶hdfs數(shù)據(jù)正常,基于Hbase2特性,可以基于hdfs進(jìn)行數(shù)據(jù)恢復(fù)
2.停用hbase服務(wù);
3.備份或遷移hbase hdfs文件。例如如下
hdfs dfs -mv /hbase/data /hbase/data_1 //重命名
hdfs dfs -cp -p /hbase/data /hbase/data_1 //復(fù)制一份,客戶涉及數(shù)據(jù)200T,采用重命名方式
4.刪除zk中數(shù)據(jù)
hbase zkcli
rmr /hbase-unsecure
5.將備份或遷移的數(shù)據(jù)恢復(fù)。
hdfs dfs -mv /hbase/data_1 /hbase/data //重命名回去,可以根據(jù)實(shí)際情況,僅復(fù)制部分?jǐn)?shù)據(jù)。
6.啟動(dòng)Hbase;登陸hbase Master查看狀態(tài)是否正常。
7.修復(fù)meta表
hbase hbck -j /root/hbase-operator-tools-1.2.0/hbase-hbck2/hbase-hbck2-1.2.0.jar addFsRegionsMissingInMeta 'FAULT' //引用hbck2,對(duì)FAULT命名空間的表進(jìn)行修復(fù)。多個(gè)命名空間,建議多次執(zhí)行。
8.重啟HBase Master;注意僅需對(duì)當(dāng)前Master主機(jī)相對(duì)應(yīng)服務(wù)重啟,自動(dòng)會(huì)選擇其它主機(jī)為HBase Master;啟動(dòng)成功后,會(huì)提示大量的進(jìn)入RIT狀態(tài)。
9.登陸HBase Master,查看RIT,獲取RIT中Rgid;復(fù)制并保存到文件,例如0903rit。執(zhí)行下面命令重新創(chuàng)建區(qū)域
hbase hbck -j /root/hbase-operator-tools-1.2.0/hbase-hbck2/hbase-hbck2-1.2.0.jar assigns -i /root/0903rit //這里是引用的文件,可以選擇單個(gè)rit。
10.進(jìn)入hbase shell,count查看表是否正常。
特別注意:如果沒有namespace;可以在hbase shell啟動(dòng)好后確認(rèn)表正常情況下,直接create_namespace即可。
Hbase中Meta損壞是最常見的問題,采用此方法可以安全快速的恢復(fù)數(shù)據(jù)。此方法還可以用于數(shù)據(jù)遷移。