Hbase客户端RPC超时

时间:2015-06-18 18:46:01

标签: hbase

我正在运行Hbase 1.0.1 / Hadoop 2.5.2。我尝试在桌面上运行扫描,但我得到了RPC超时。

我已将Hbase RPC超时更改为2分钟,我可以通过UI确认...

<property>
  <name>hbase.rpc.timeout</name>
  <value>120000</value>
  <source>hbase-site.xml</source>
</property>

...但我的客户仍然在60年代后超时......

Caused by: java.io.IOException: Call to xxxxxxx/172.16.5.13:16020 failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=2968, waitTime=60001, operationTimeout=60000 expired.
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.wrapException(RpcClientImpl.java:1235)
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1203)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:216)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:300)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:31751)
    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:199)
    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:62)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
    ... 6 more
Caused by: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=2968, waitTime=60001, operationTimeout=60000 expired.
    at org.apache.hadoop.hbase.ipc.Call.checkAndSetTimeout(Call.java:70)
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1177)
    ... 12 more

我已尝试更改缓存块大小,但这似乎没有任何区别。

我是否还缺少一些其他超时。表中有很多行(数百万)虽然扫描只返回10万,但问题似乎只是一组特定的区域。

5 个答案:

答案 0 :(得分:5)

基于第一个答案。我之前配置了属性 hbase.client.scanner.timeout.period hbase.rpc.timeout 以打开与HBase群集的连接:

pause

答案 1 :(得分:4)

在客户端而不是hbase-site.xml中创建连接时尝试此操作:

conf.set("hbase.rpc.timeout", "1800000")

答案 2 :(得分:3)

当服务器收到扫描RPC请求时,计算时间限制为两个值中较小值的一半: hbase.client.scanner.timeout.period hbase.rpc .timeout (默认为60000毫秒或一分钟)。 这就是为什么设置2分钟后你的扫描时间会在60秒内超时。

达到时间限制后,服务器会将累积的结果返回到该点。此结果集可能为空。如果您的使用模式包含扫描时间超过一分钟,则可以增加这些值。

要确保超时时间不会太短,可以将 hbase.cells.scanned.per.heartbeat.check 配置为在发生超时检查之前必须扫描的最小单元格数。默认值为10000.值越小,超频检查就越频繁。

以下链接可能有助于配置Hbase扫描的超时:

https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.4.2/bk_installing_manually_book/content/best-practices-timeouts-phoenix.html

https://www.cloudera.com/documentation/enterprise/5-5-x/topics/admin_hbase_scanner_heartbeat.html#concept_xsl_dz1_jt

答案 3 :(得分:0)

这个应该有效。

hbase org.apache.hadoop.hbase.mapreduce.Export -Dhbase.client.scanner.timeout.period=600000 tbname /path/to/hdfs

答案 4 :(得分:0)

对于opterationTimeout,您需要更改的是以下内容:

  <property>
    <name>hbase.client.operation.timeout</name>
    <value>10000</value>
  </property>