聊聊兩周兩次的非人為HBase的事故
2018-05-21事故:
1.現象
由於VM虛擬機的3台的RS節點異常退出,然後重啟HBase, Master HA服務都無法啟動。
2.Master日誌
3.原理分析3.1 老版本:Master分配Regions
新創建的所有的Regions,通過AssignmentManager將這些Region按照輪詢(Round-Robin)的方式分配到每一個RegionServer中,具體的分配計劃是由LoadBalancer來提供的。
AssignmentManager負責所有Regions的分配/遷移操作,Master中有一個定時運行的線程,來檢查集群中的Regions在各個RegionServer之間的負載是否是均衡的,如果不均衡,則通過LoadBalancer生成相應的Region遷移計劃,HBase中支持多種負載均衡演算法,有最簡單的僅考慮各RegionServer上的Regions數目的負載均衡演算法,有基於遷移代價的負載均衡演算法,也有數據本地化率優先的負載均衡演算法,因為這一部分已經提供了插件化機制,用戶也可以自定義負載均衡演算法。
摘抄:
http://hbasefly.com/2016/09/08/hbase-rit/
3.2 我們生產上HBase1.2.0,查看源代碼
https://github.com/apache/hbase/blob/rel/1.2.0/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java
兩個方法:
waitOnRegionToClearRegionsInTransition: 等待region清除RIT狀態
waitForUpdate方法: 分配管理器等待更新狀態映射
4.嘗試解決
重啟Master, 讓它刷, 發現沒什麼用;
然後stop兩台master,新增兩台新的master,啟動,第一台,實時查看日誌讓它刷,然後等刷完,啟動第二台;然後觀察5分鐘,正常。
然後觀察使用半小時,刪除舊的兩台master。
第一次的事故就這樣解決過去了,其實這時心裡有點清楚是怎麼回事了。
5.思考HBase2.0新版本
A new Region assignment manager ("AMv2") ,HBASE-14350 , HBASE-14614。
AssignmentManager V2基於Procedure V2實現,能夠更快速的分配Region,維護的region狀態機存儲不再依賴於ZooKeeper。
可以搭建一個hbase2.0 集群,查看ZK節點列表,已經找不到類似region-in-transistion節點了。
2018-05-28事故:
1.現象
由於機房的某台刀片機 license 到期沒有,自動續上,刀片機直接關機了,然後RS節點全面異常中斷,微信和郵件警告滿天飛了,哎。
2.Master日誌48機器:
另外47機器的日誌就處於暫停輸出狀態,為backup;
查看48機器的日誌,全部列印INFO級別的,應該是獲取active,然後去恢復租約。
3.RS節點日誌:
自動移動WALS,在恢復。
接下來就是 tail -F 實時查看Master和RS節點的日誌,等待是最讓人著急的,
然後發現都是輸出INFO級別的日誌,其實內心很平靜的,於是泡壺茶,靜靜的等待著,靜靜的等待著。
4.等待20分鐘,使用DBeaver工具測試能夠連接HBase集群了,說明OK了。但是,CDH web界面顯示HBase master狀態問題。
5. 再次分析
47 48 master也沒顯示active backup狀態,且健康檢查是失敗的。
這時HBase還是感嘆號??,令人很不爽,總感覺HBase有問題。但是dbeaver工具連接又是OK的,表明HBase master是active和backup的。
發現其實提示了一句話(上圖中):
6.解決方案
重啟CDH的service monitor服務,然後發現web 界面的HBase master狀態有active backup了。
總結:
1.看見某位大牛的話: "恐懼來源於未知",說真的第二次事故,我一點也不恐懼,因為有第一次的經驗積累。
2.關於HBase的RS由於各種因素宕機的,導致Master無法Active的,在恢復過程中,千萬不要慌,仔細分析Master、RS日誌,定點分析。
3.底層的物理環境是非常重要的。
以上是本人的兩次事故的記錄分析,如有不當,多謝指出和交流。
如需轉載,請在開篇顯著位置註明文章出處(轉自:HBase技術社區hbasegroup)
大家工作學習遇到HBase技術問題,把問題發布到HBase技術社區論壇http://hbase.group,歡迎大家論壇上面提問留言討論。想了解更多HBase技術關注HBase技術社區公眾號(微信號:hbasegroup),非常歡迎大家積極投稿。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:HBase技術社區 |