我正在运行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>
Run Code Online (Sandbox Code Playgroud)
...但我的客户仍然在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
Run Code Online (Sandbox Code Playgroud)
我已经尝试更改缓存块大小,但这似乎没有任何区别.
还有其他一些我遗漏的超时.表中有很多行(数百万)虽然扫描只返回了数千个,但问题似乎只是一组特定的区域.
小智 7
基于第一个答案.我之前配置了属性hbase.client.scanner.timeout.period和hbase.rpc.timeout以打开与HBase集群的连接:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.rpc.timeout", "1800000");
conf.set("hbase.client.scanner.timeout.period", "1800000");
Run Code Online (Sandbox Code Playgroud)
当服务器收到扫描RPC请求时,时间限制被计算为以下两个值中较小者的一半:hbase.client.scanner.timeout.period和hbase.rpc.timeout(均默认为60000毫秒或一分钟) )。这就是为什么在设置2分钟后您的扫描在60秒内超时的原因。
当达到时间限制时,服务器将返回到该点为止已累积的结果。该结果集可能为空。如果您的使用模式包括扫描将花费一分钟以上的时间,则可以增加这些值。
要确保超时时间不太短,可以将hbase.cells.scanned.per.heartbeat.check配置为发生超时检查之前必须扫描的最小单元数。默认值为10000。较小的值会使超时检查的发生频率更高。
以下链接可能有助于为Hbase扫描配置超时:
当您在客户端而不是在以下位置创建连接时尝试此操作hbase-site.xml:
conf.set("hbase.rpc.timeout", "1800000")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19392 次 |
| 最近记录: |