We have been using timeouts in production via two different methods:
1. Use RPC timeout mechanism provided by HBase client. For this you will
need both 2937 and 3154. We backported 2937 to 0.90.3. The reason 3154
alone does not help is because if you set the conf parameter introduced in
3154 (hbase.rpc.timeout) to a very low value your calls to meta (ROOT and
META) tables timeout all the time and almost no request go through. That is
where 2937 comes in. It uses hbase.client.operation.timeout knob for all
RPC calls except the ones made to meta tables.
2. Use an async method (example ExecutorService with timeout) to make HBase
In our experience #1 perform better (in terms of % calls timing out).
Having said that I am still interested to hear comments from experts. I
personally was not able to grasp reasoning behind introduction of
hbase.client.operation.timeout configuration parameter.
On Thu, Dec 15, 2011 at 3:15 PM, Steve Boyle <[EMAIL PROTECTED]>
> I'm trying to understand what timeout controls are available in the hbase
client. I'm using hbase version 0.90.4-cdh3u2. I have a client
application that does gets, puts, increments and scans. I'd like to be
able to have a client side timeout such that the client can clean-up in a
case where the response is taking a while for whatever reason.
> I've seen this jira which indicates that the feature I'm looking for is
coming in a future release:
> I've also seen this jira that looks related and appears to be already
> What is the best way to control a timeout for the hbase client?