某客戶因為數據表數量過多,導致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損壞是最常見的問題,采用此方法可以安全快速的恢復數據。此方法還可以用于數據遷移。