hbase問題排查思路

原文鏈接:https://blog.csdn.net/u014156013/article/details/82628551

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-日誌分析

  • 監控分析只能告訴你可能是什麼原因,間接原因

  • 日誌分析才能告訴你問題的精確原因,最直接原因。

       一般的問題都能在日誌中找到直接原因,再根據原因找答案。

  • 通過日誌分析可以弄清楚事情的來龍去脈,監控不會告訴你那麼多

【小結】

HBCK檢查什麼?

1、HBase Region一致性

a.集羣所有region都被assign,且被deploy到唯一一臺regionserver上

b.該region的狀態在內存、hbase:meta表及zk上是否一致

2、HBase表完整性

對集羣中任意一張表,每個rowkey都僅能存在於一個region區間

region不一致情況主要分爲以下幾種類型:

1、There is a hole in the region chain between X and Y.

這種情況是在hdfs層面上的,這個region的.regioninfo(meta)文件不存在,使用"-fixHdfsHole"進行修復;

-fixHdfsHole:修復region holes(空洞,某個區間沒有region)問題

2、Found lingering reference file X.

這種情況基本上都是由於split reion時造成的,這些文件都是連接文件,使用"-fixReferenceFiles"進行修復;

3、Region X on HDFS,but not listed in hbase:meta or deployed on any region server.

這種情況下region的實際數據是存在的,但是在hbase:meta中不存在,使用"-fixMeta"進行信息同步修復;

-fixMeta:主要修復.regioninfo文件和hbase:meta元數據表的不一致。修復的原則是以HDFS文件爲準:如果region在HDFS上存在,但在hbase.meta表中不存在,就會在hbase:meta表中添加一條記錄。反之如果在HDFS上不存在,而在hbase:meta表中存在,就會將hbase:meta表中對應的記錄刪除

4、Region X not deployed on any region server.

這種情況下,region的hfile等數據都在,只是沒有在任何region上online,使用"fixAssignments"進行修復。

-fixAssignments:修復沒有assign、assign不正確或者同時assign到多臺RegionServer的問題region。

5、使用"- repairHoles"進行修復。相當於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans

由於不一致的現象多種多樣,原因也不盡相同,通過來說,regionserver crash、region在regionserver中遷移燈是基本原因。

 

步驟1. hbase hbck 檢查輸出所以ERROR信息,每個ERROR都會說明錯誤信息。

步驟2. hbase hbck -fixTableOrphones 先修復tableinfo缺失問題,根據內存cache或者hdfs table 目錄結構,重新生成tableinfo文件。

步驟3. hbase hbck -fixHdfsOrphones 修復regioninfo缺失問題,根據region目錄下的hfile重新生成regioninfo文件

步驟4. hbase hbck -fixHdfsOverlaps 修復region重疊問題,merge重疊的region爲一個region目錄,並從新生成一個regioninfo

步驟5. hbase hbck -fixHdfsHoles 修復region缺失,利用缺失的rowkey範圍邊界,生成新的region目錄以及regioninfo填補這個空洞。

步驟6. hbase hbck -fixMeta 修復meta表信息,利用regioninfo信息,重新生成對應meta row填寫到meta表中,併爲其填寫默認的分配regionserver

步驟7. hbase hbck -fixAssignment 把這些offline的region觸發上線,當region開始重新open 上線的時候,會被重新分配到真實的RegionServer上 , 並更新meta表上對應的行信息。

 

 

 

  •  

  •  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章