hbase 查询设置超时_HBase 客户端避坑指南

原标题:HBase 客户端避坑指南1.RPC重试配置要点在HBase客户端到服务端的通信过程中,可能会碰到各种各样的异常。例如有几种常见导致重试的异常:● 待访问Region所在的RegionServer发生宕机,此时Region已经被挪到一个新的RegionServer上,但由于客户端meta缓存的因素,首次RPC请求仍然访问到了老的RegionServer上。后续将重试发起RPC。● 服务端负...
摘要由CSDN通过智能技术生成

原标题:HBase 客户端避坑指南

1.RPC重试配置要点

在HBase客户端到服务端的通信过程中,可能会碰到各种各样的异常。例如有几种常见导致重试的异常:

● 待访问Region所在的RegionServer发生宕机,此时Region已经被挪到一个新的RegionServer上,但由于客户端meta缓存的因素,首次RPC请求仍然访问到了老的RegionServer上。后续将重试发起RPC。

● 服务端负载较大,导致单次RPC响应超时。客户端后续将继续重试,直到RPC成功或者超过容忍最大延迟。

● 访问meta表或者ZooKeeper异常。

首先来了解一下HBase常见的几个超时参数:

1) hbase.rpc.timeout:表示单次RPC请求的超时时间,一旦单次RPC超时超过该时间,上层将收到TimeoutException。默认为60000,单位毫秒。

2) hbase.client.retries.number:表示调用API时最多容许发生多少次RPC重试操作。默认为35,单位次。

3) hbase.client.pause:表示连续两次RPC重试之间的sleep时间,默认100,单位毫秒。注意,HBase的重试sleep时间是按照随机退避算法来计算的,若hbase.client.pause=100,则第一次RPC重试前将休眠100ms左右 ,第二次RPC重试前将休眠200ms左右,第三次RPC重试前将休眠300ms左右,第四次重试将休眠500ms左右,第五次重试前将休眠1000ms左右,第六次重试则将休眠2000ms左右....也就是重试次数越多,则休眠的时间会越来越长。因此,若按照默认的hbase.client.retries.number=35的话,则可能长期卡在休眠和重试两个步骤中。

4) hbase.client.operation.timeout:表示单次API的超时时间,默认为1200000,单位毫秒。注意,get/put/delete等表操作称之为一次API操作,一次API可能会有多次RPC重试,这个operation.timeout限制的是 API操作的总超时。

假设某业务要求单次HBase的读请求延迟不超过1秒,那么该如何设置上述4个超时参数呢?

首先,很明显hbase.client.operation.timeout应该设成1秒。

其次,在SSD集群上,如果集群参数设置合适且集群服务正常,则基本可以保证p99延迟在100ms以内,因此hbase.rpc.timeout设成100ms。

这里,hbase.client.pause用默认的100ms。

最后,在1秒钟之内,第一次PRC耗时100ms,休眠100ms;第二次RPC耗时100ms,休眠200ms;第三次RPC耗时100ms,休眠300ms;第四次RPC耗时100ms,休眠500ms。因此,在hbase.client.operation.timeout内,至少可执行4次RPC重试,真实的单次 RPC耗时可能更短(因为有hbase.rpc.timeout保证了单次RPC最长耗时),所以hbase.client.retries.number可以稍微设大一点(保证在1秒内有更多的重试,从而提高请求成功的概率),设成6次。

2.CAS接口是Region级别串行执行的,吞吐受限

HBase客户端提供一些重要的CAS(Compare And Swap)接口,例如:

boolean checkAndPut(byte[] row, byte[] family,byte[] qualifier,byte[] value, Put put)long incrementColumnValue(byte[] row,byte[] family,byte[] qualifie

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值