1. 程式人生 > >hbase總結:hbase client訪問的超時時間、重試次數、重試間隔時間的配置

hbase總結:hbase client訪問的超時時間、重試次數、重試間隔時間的配置

超時時間、重試次數、重試時間間隔的配置也比較重要,因為預設的配置的值都較大,如果出現hbase叢集或者RegionServer以及ZK關掉,則對應用程式是災難性的,超時和重新等會迅速佔滿web容器的連結,導致web容器停止服務,關於socket的超時時間,有兩種:1:建立連線的超時時間;2:讀資料的超時時間。

可以配置如下幾個引數:

1. hbase.rpc.timeout:rpc的超時時間,預設60s,不建議修改,避免影響正常的業務,在線上環境剛開始配置的是3秒,執行半天后發現了大量的timeout error,原因是有一個region出現瞭如下問題阻塞了寫操作:“Blocking updates … memstore size 434.3m is >= than blocking 256.0m size”可見不能太低。

2. ipc.socket.timeout:socket建立連結的超時時間,應該小於或者等於rpc的超時時間,預設為20s

3. hbase.client.retries.number:重試次數,預設為14,可配置為3

4. hbase.client.pause:重試的休眠時間,預設為1s,可減少,比如100ms

5. zookeeper.recovery.retry:zk的重試次數,可調整為3次,zk不輕易掛,且如果hbase叢集出問題了,每次重試均會對zk進行重試操作,zk的重試總次數是:hbase.client.retries.number * zookeeper.recovery.retry,並且每次重試的休眠時間均會呈2的指數級增長,每次訪問hbase均會重試,在一次hbase操作中如果涉及多次zk訪問,則如果zk不可用,則會出現很多次的zk重試,非常浪費時間。

6. zookeeper.recovery.retry.intervalmill:zk重試的休眠時間,預設為1s,可減少,比如:200ms

7. hbase.regionserver.lease.period:scan查詢時每次與server互動的超時時間,預設為60s,可不調整。