hbase集群不一致處理處理的經典案例


一、場景一

集群信息: 
7台管理節點+51台數據節點    ###此為一套多租戶集群 
問題描述: 
4月13 10:30  其中一台數據節點因硬件故障,突然宕機,同時業務出現入庫緩慢現象 
故障檢查: 
hbase hbck   ###檢查hbase健康情況,結果為:INCONSISTENT,不一致的記錄共80條 
故障分析及處理: 
根據錯誤信息及進行修復: 
ERROR: Found lingering reference file hdfs://drmcluster/hbase/data/ngmkt/mk_cligprs_6_202004/a8a613fe08c7afda9f7f8201aa09c640/cf/c5d3b16021154c24ad6687e83c564258.19043d9ea30df6a11c60586a4dbeaeb0
修復方法:hbase hbck -fixReferenceFiles 

ERROR: Region { meta => ngmkt:mk_cligprs_6_202004,62060228051,1586860178148.995a683a71e76cdee7049872f0e67898., hdfs => hdfs://drmcluster/hbase/data/ngmkt/mk_cligprs_6_202004/995a683a71e76cdee7049872f0e67898, deployed => , replicaId => 0 } not deployed on any region server. 
修復方法:hbase hbck -fixMeta -fixAssignments    # 根據hdfs清理mete表,hdfs存在的信息添加至meta表,hdfs不存在的從meta表中刪除,然后進行重新上線 

ERROR:Multiple region have the same startkey: 
修復方法:hbase hbck -fixHdfsOverlaps      #修復多個region 的startkeytg 


ERROR: Region { meta => ngmkt:mk_cligprs_6_202004,62026143787,1586860178148.a8a613fe08c7afda9f7f8201aa09c640., hdfs => null,deployed =>,replicaId => 0} found in META,but not in HDFS or deployed on any region server. 
修復方法:hbase hbck -fixAssignments -fixMeta    # 針對Region在meta表和Regionserver中存在,但是在hdfs不存在情況修復 

修復結果:
經過多次修復后hbase狀態已經恢復正常

 

 

 

二、場景二

202113日早6點,業務反饋無法select表。

 

集群信息2台管理節點+14台數據節點

 

Select表涉及語句

SELECT DISTINCT phone_no  FROM rm_batchreceiptrecord_info  WHERE touch_result = "1" AND  position_id IN ("POSITION_01_01","POSITION_01_04","POSITION_01_05","POSITION_01_06","POSITION_01_07","POSITION_01_08","POSITION_04_01","POSITION_04_02","POSITION_04_03","POSITION_04_05") AND  SUBSTR(touch_time,1,8) > 20201104;

 

問題檢查

1.通過hbase監控頁面檢查到regionserver 13號節點丟失,節點恢復后業務仍沒有恢復;

2.查詢hbase表的鎖定情況,目標問題表並未鎖定;

3.檢查yarn監控頁面,CPU、內存資源占用並不高;

 

4.在hbase shell count表名,發現regionserver7號節點異常

 

注:Hbase統計行數應使用hbase org.apache.hadoop.hbase.mapreduce.RowCounter

5.執行hbase hbck檢查,結果有37張表不一致,詳細日志見附件

6.調整業務程序,將有異常表從程序中過濾,然后繼續運行保障業務連續性

7.與業務溝通刪除其中35張無用的表數據

8.修復hbase不一致

錯誤信息中共2類信息,具體處理方法如下:

    • 根據錯誤信息ERROR: There is a hole in the region chain between  and .  You need to create a new .regioninfo and region dir in hdfs to plug the hole”,作以下修復

      hbase hbck -fixHdfsOrphans  #修復regioninfo信息

    • 根據錯誤信息ERROR: Region { meta => stra_opr:RM_CUSTGROUP_20181211115158017116968_DETAIL_INFO,,1544500621573.060230f65a1390a3c01df610e96e4729., hdfs => hdfs://drmcluster/hbase/data/stra_opr/RM_CUSTGROUP_20181211115158017116968_DETAIL_INFO/060230f65a1390a3c01df610e96e4729, deployed => , replicaId => 0 } not deployed on any region server.  作以下修復:

      hbase hbck -fixMeta -fixAssignments  #更新meta表,然后重新上線

    • 查看修復結果fixmeta.log,發現新錯誤Region failed to move out of transition within timeout XXXXXXms”

      此錯誤為有region處於rit狀態,計划切換master,刷新緩存信息

      Kill -9 masterID     #切換前檢查備master狀態正常

    • 再次hbck檢查hbase

      檢查正常,無不一致信息
      9.重新啟用目標問題表,再次測試業務數據運行,業務正常運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM