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