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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉載ORA-01591錯誤故障處理(ji)
- HBase協處理器載入的三種方式
- 【故障處理】ORA-600:[13013],[5001]故障處理
- 微服務的故障處理微服務
- linux故障處理Linux
- 故障分析 | Greenplum Segment 故障處理
- GPON網路故障如何處理?GPON網路故障處理流程
- Bumblebee之負載、限流和故障處理實踐負載
- Oracle、MySQL等資料庫故障處理優質文章分享 | 10月文章彙總OracleMySql資料庫
- 轉載:Java處理高併發量訪問的處理總結Java
- 資料庫故障處理優質文章彙總(含Oracle、MySQL、MogDB等)資料庫OracleMySql
- MySQL show processlist故障處理MySql
- Oracle更新Opatch故障處理Oracle
- teams登入故障處理
- NO.A.0001——zabbix常見故障的處理
- [轉載] Java異常處理習題Java
- 線上故障處理手冊
- TS - 處理故障的一些通用方法
- 伺服器叢集的故障轉移方案伺服器
- 【故障處理】TNS-04610問題
- GaussDB(分散式)例項故障處理分散式
- Oracle 10g RAC故障處理Oracle 10g
- ORA-01591錯誤故障處理
- 如何處理HTTP 503故障問題?HTTP
- Oracle 11.2.0.4 Dataguard兩則故障處理Oracle
- 分散式事務處理方案,微服事務處理方案分散式
- 【轉載】如何轉發部落格園中的文章
- TiDB故障處理之讓人迷惑的Region is UnavailableTiDBAI
- Oracle DG同步失敗故障處理(二)Oracle
- 體檢伺服器nginx故障處理伺服器Nginx
- Oracle client安裝the jre is 0故障處理Oracleclient
- Android Binder機制文章轉載Android
- 資料中心儲存系統故障的處理方式
- 恆訊科技教你處理伺服器硬碟的故障伺服器硬碟
- 標籤 圖片載入失敗時候處理方案
- 下載資料的處理
- 好程式設計師大資料培訓分享HBase協處理器載入的三種方式程式設計師大資料
- 【故障處理】ORA-3113 "end of file on communication channel"