hbase hbck主要用來檢查hbase集群region的狀態以及對有問題的region進行修復。
hbase hbck :檢查hbase所有表的一致性,如果正常,就會Print OK
hbase hbck -details:檢查hbase所有表的一致性,並且輸出詳細報告。
hbase hbck table1 table2:指定檢查某些表,可以輸入多個表,用空格隔開。
HBCK - HBCK檢查什么?
(1)HBase Region一致性
- 集群中所有region都被assign,而且deploy到唯一一台RegionServer上
- 該region的狀態在內存中、hbase:meta表中以及zookeeper這三個地方需要保持一致
(2)HBase 表完整性
- 對於集群中任意一張表,每個rowkey都僅能存在於一個region區間
HBCK – 常用檢查命令
- ./bin/hbase hbck
- ./bin/hbase hbck –details
- ./bin/hbase hbck TableFoo TableBar
HBCK - 局部低危修復
- -fixAssignments :修復沒有assign、assign不正確或者同時assign到多台RegionServer的問題region。
- -fixMeta :主要修復.regioninfo文件和hbase:meta元數據表的不一致。修復的原則是以HDFS文件為准:如果region在HDFS上存在,但在hbase.meta表中不存在,就會在hbase:meta表中添加一條記錄。反之如果在HDFS上不存在,而在hbase:meta表中存在,就會將hbase:meta表中對應的記錄刪除。
HBCK –高危修復
- region區間overlap相關問題的修復屬於高危修復操作,因為這類修復通常需要修改HDFS上的文件,有時甚至需要人工介入。
- 對於這類高危修復操作,建議先執行hbck -details詳細了解更多的問題細節,再執行相應的修復命令
- -repair|-fix 命令強烈不建議生產線使用
案例1:

案例2:

RIT處理套路
- 套路一:pending_open(或pending_close)狀態的region通常可以使用hbck命令修復
- 套路二:failed_open (或failed_close)狀態的region通常無法使用hbck命令修復,需檢查日志確認region無法打開(關閉)的具體原因
- 套路三:region處於RIT狀態但hbck顯示正常,把zk上的region-in-transaction節點相關region刪除,重啟master
HBase-日志分析
- 監控分析只能告訴你可能是什么原因,間接原因
- 日志分析才能告訴你問題的精確原因,最直接原因。
一般的問題都能在日志中找到直接原因,再根據原因找答案。
- 通過日志分析可以弄清楚事情的來龍去脈,監控不會告訴你那么多


HBase常見問題
