Hbase RIT故障修復


業務場景:

RocketMQ+Storm+Hbase

組件版本:

RocketMQ:3.4.6

Storm:1.2.1

Hbase:1.2.1

1. 問題描述

4月15號早上發現業務系統前一天數據量明顯偏低,查看系統發現storm入Hbase的TPS很低,甚至為0。

2. 問題定位

通過查看Hbase和Storm監控頁面,發現dscn18節點不在服務中,遠程連接比較卡頓,去機房查看沒有報警,通過終端查看HRegionServer和Supervisor進程都在,15號上午11點多查看系統日志:/var/log/message:

系統日志:

 

重啟后,日志變為正常

 

綜上判斷可能是因為網絡通信原因導致dscn18節點異常。

Hbase日志:顯示dscn18,region已下線

 

Storm日志:顯示連接超時

  

Hbase監控頁面:RIT問題

 

綜上,可判斷,由於dscn18節點連接異常,導致當前節點Hbase和Storm的服務異常,另外Hbase出現RIT,會影響Hbase的寫入。

 

3. 解決過程

當時嘗試重啟拓撲,但寫入TPS很低,后來將dscn18的Regionserver下線,效果仍不理想,最后決定做Hbase在線修復(dscn18已下線):

當時Hbase狀態:

 

步驟:

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

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

3. hbase hbck -fixHdfsOrphans 修復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 -fixAssignments 把這些offline的region觸發上線,當region開始重新open 上線的時候,會被重新分配到真實的RegionServer上 , 並更新meta表上對應的行信息。

 

另外,當執行完所有修復步驟后仍然有:

ERROR: Empty REGIONINFO_QUALIFIER found in hbase:meta

執行:

hbase hbck -fixEmptyMetaCells

 

當時修復了近三個小時,修復完成后,重啟了Hbase,RIT異常解決了,再次檢查出現了新的問題:

1、元數據缺失

 

2、region重疊

 

 

 

再利用之前的修復命令無法修復。通過協商得到解決辦法:

針對1:

通過執行hbase hbck -fixEmptyMetaCells

修復 ERROR: Empty REGIONINFO_QUALIFIER found in hbase:meta

針對2:

delete 'hbase:meta','DBN_YTO,601889669485241086,1536145292692.f47aaa41740bf9d99b1cc19b3de29d9b.','info:regioninfo'

delete 'hbase:meta','DBN_YTO,601889669485241086,1546409804387.7795e5726f6f9e018cfa2fe93b20556d.','info:regioninfo'

hdfs dfs -rm -r /hbase/data/default/DBN_YTO/f47aaa41740bf9d99b1cc19b3de29d9b

hdfs dfs -rm -r /hbase/data/default/DBN_YTO/7795e5726f6f9e018cfa2fe93b20556d

最后執行:

hbase hbck -fixAssignments -fixMeta -fixHdfsHoles

 

Hbase狀態為正常,到此Hbase修復完畢!

之后重啟合並Storm,個別端口連接被占用,重啟Storm后檢查無僵屍進程,最終將worker數由400改為340(17個Storm節點),任務啟動成功,總TPS達到8萬左右,到此問題解決完畢。

4. 總結

Hbase在線修復之前首先保證停掉相關業務,並且確保所有region都在線,否則修復可能會產生重復region,另外確保hbase根目錄下文件沒有損壞丟失,如果有,先移除掉,再修復。

 

 移除命令:

hdfs fsck -delete

/hbase/back/SJYB_FEDEX/fedex_back/e90da00b658869d9e8ec90b871637adc/if/5612ded9b14341e19160bdc7238bf4da

 

 

 

 


免責聲明!

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



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