hbase 故障的處理方案。 (轉載文章)
最近遭遇了, hbase 節點故障的事故次數有點多了,結合現場。
發現網上這票文章, , 感謝原作者。
參考 : https://cloud.tencent.com/developer/article/1030070
一、故障現象
1、 首先regionserver頻繁爆出兩類錯誤:
wal.FSHLog: Error syncing, request close of WAL:
以及出現錯誤:
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 293 actions: NotServingRegionException: 42 times
以及出現regionserver dead 故障:
Region server exiting java.lang.RuntimeException: HRegionServer Aborted
既然透過最佳化hbase本身無法解決regionserver頻繁掛掉的原因,那就必須將分析擴大到hbase相關的程式。與hbase密切相關的是zookeeper。我們詳細分析看zk的日誌,比如之前regionserver在03:03:17時間出現了regionserver dead 報錯資訊,因此我們分析zk在這個時間段前後的日誌。從日誌看到regionserver與zk的超時時間是40秒,“the sessions negotiated with zookeeper from dead regionserver were of 40s”。然後再檢視regionserver的gc時長,確實超過了40秒。
gc時間過長,超過40秒的maxSessionTimeout時間,使得zk認為regionserver已經掛掉dead;
zk返回dead region到master,master就讓其他regionserver負責dead regionserver的regions;
其他regionserver會讀取wal進行恢復regions,處理完的wal,會把wal檔案刪除;
dead regionserver的gc完成,並且恢復服務之後,找不到wal,已經產生上面截圖中的報錯(wal.FSHLog: Error syncing, request close of WAL);
dead regionserver從zk得知自己dead,就關閉自己(Region server exiting,java.lang.RuntimeException: HRegionServer Aborted)
四、最終原因:tickTime超時
經過上面的分析,是gc時間超過40秒的maxSessionTimeout導致的regionserver掛掉。但是,我們就很納悶了,因為我們設定的zookeeper.session.timeout超時時間為240秒,遠遠超過40秒時間。非常奇怪呀!
經過hbase社群求助,以及google類似的問題,最終找到原因(
詳細連結,請參考:https://superuser.blog/hbase-dead-regionserver/
):
原來我們的HBase 並沒有設定tickTime,最終hbase與zk的會話最大超時時間並不是zookeeper.session.timeout引數決定的,而是有zk的maxSessionTimeout決定。zk會根據minSessionTimeout與maxSessionTimeout兩個引數重新調整最後的超時值,minSessionTimeout=2*tickTime, maxSessionTimeout=20*tickTime。我們的大資料叢集,zk的tickTime設定為預設值(2000ms)2秒,因此,最終hbase 與 zk的超時時間就為40秒。
經過調整zk的tickTime為6秒,相應的zookeeper.session.timeout為120秒,最終解決regionserver 頻繁掛掉的故障。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2222110/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- latch: cache buffers chains故障處理總結(轉載)AI
- 轉載ORA-01591錯誤故障處理
- HBase協處理器載入的三種方式
- 轉載ORA-01591錯誤故障處理(ji)
- [ORACLE轉載-故障處理]11g的ohasd無法隨機啟動Oracle隨機
- 【故障處理】一次RAC故障處理過程
- MongoDB故障處理MongoDB
- 微服務的故障處理微服務
- Oracle、MySQL等資料庫故障處理優質文章分享 | 10月文章彙總OracleMySql資料庫
- 故障分析 | Greenplum Segment 故障處理
- 歸檔日誌滿導致的資料庫掛起故障處理【轉載】資料庫
- 衝突處理的方法(轉載)
- Bumblebee之負載、限流和故障處理實踐負載
- 轉貼:ORA-04031故障分析處理
- GPON網路故障如何處理?GPON網路故障處理流程
- 【故障處理】ORA-600:[13013],[5001]故障處理
- 【故障處理】ORA- 2730*,status 12故障分析與處理
- linux故障處理Linux
- ora-故障處理
- 批處理中的for詳解(轉載)
- 系統故障解析:Windows異常處理流程(轉)Windows
- 【轉載】SHELL字串處理技巧(${}、##、%%)字串
- 【故障處理】ORA-12162 錯誤的處理
- 資料庫故障處理優質文章彙總(含Oracle、MySQL、MogDB等)資料庫OracleMySql
- HBase啟動不了的一個原因處理
- 線上故障處理手冊
- MySQL show processlist故障處理MySql
- teams登入故障處理
- Oracle更新Opatch故障處理Oracle
- 如何快速處理線上故障
- Mysql故障處理2則MySql
- dataguard故障處理一則
- AIX系統故障處理AI
- 【Linux】 nfs 故障處理LinuxNFS
- 轉載:Java處理高併發量訪問的處理總結Java
- PythonIP處理模組IPy(轉載)Python
- CPA十三--會計處理(轉載)
- 【故障處理】CRS-1153錯誤處理