一、場景一
集群信息:
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狀態已經恢復正常
二、場景二
2021年1月3日早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.重新啟用目標問題表,再次測試業務數據運行,業務正常運行
