Your question implies a lot of other considerations so I'll answer strictly to it. By default we retry 10 times to get access to data with pauses of increments of 2 seconds in the same fashion of the BSD TCP syn backoff table.
The configs are: <property> <name>hbase.client.pause</name> <value>2000</value> <description>General client pause value. Used mostly as value to wait before running a retry of a failed get, region lookup, etc.</description> </property> <property> <name>hbase.client.retries.number</name> <value>10</value> <description>Maximum retries. Used as maximum for all retryable operations such as fetching of the root region from root region server, getting a cell's value, starting a row update, etc. Default: 10. </description> </property> And the backoff table is (from HConstants): public static int RETRY_BACKOFF[] = { 1, 1, 1, 2, 2, 4, 4, 8, 16, 32 }; So by default we wait 2, 2, 2, 4, 4, 8, (...) seconds before throwing a RetriesExhaustedException. With hbase.client.retries.number=1, you just wait 2 seconds but I wouldn't recommend such a small number since any region split takes a least 6 seconds in 0.20. Be also aware that we are planning to include a master-slave replication between datacenters in 0.21. J-D On Wed, Nov 25, 2009 at 8:45 PM, Murali Krishna. P <muralikpb...@yahoo.com> wrote: > Thanks JD for the detailed reply. > > Does the underlying java api currently block in case if region is not > available ? I would like to get an immediate retry indication for the java > call in such cases so that I can redirect the request to the duplicate table > in the other data center. Can this be supported? > > Thanks, > Murali Krishna > > > > > ________________________________ > From: Andrew Purtell <apurt...@apache.org> > To: hbase-user@hadoop.apache.org > Sent: Thu, 26 November, 2009 12:17:30 AM > Subject: Re: HBase High Availability > > First, there is work under way for 0.21 which will shorten the time necessary > for region redeployment. Part of the delay in 0.20 is less than ideal > performance in that regard by the master. > > Beyond that, just as a general operational principle, I recommend that you > host no more than 200-250 regions per region server. The Bigtable paper talks > about each tablet server hosting only 100 regions, with only 200 MB of data > each. While that is not cost effective for folks who do not build their own > hardware in bulk, it should cause you to think about why: > - Limiting the number of regions per tablet server limits time to recovery > upon node failure -- you can engineer this to be within some threshold > - Limiting the amount of data per region means that servers with reasonable > RAM can cache and serve a lot of the data out of memory for sub-disk data > access latencies > > So the advice here is to opt for more servers, not less; more RAM, not less; > and smaller disk, not larger. > > You should also consider the impact of server failure on HDFS -- loss of > block replicas. For each under-replicated block, HDFS must work to make > additional copies. This can come at a bad time if loss of the blocks in the > first place was due to overloading. > Smaller disks mean fewer lost block replicas. For example, attach 4 x 160 GB > drives as JBOD (as opposed to 4 x 1 TB or similar). Losing one disk means a > loss of 160 GB worth of block replicas only (as opposed to 1 TB). Loss of a > whole server means losing only 640 GB worth of block replicas (as opposed to > 4 TB). > You can also consider attaching 6 or 8 or even more modest sized disks per > server to increase the I/O parallelism (number of spindles) while also > constraining the amount of block replica loss per disk failure. > > Even so, blocked reads and writes over some interval during region > redeployment due to server failure or load rebalancing is part of the > Bigtable architecture and so HBase, unless we take additional steps such as > setting up active-passive region server pairs, but that would have > complications which affect consistency and performance and might not provide > enough benefit anyway (still there is time needed to detect failure and fall > over). This is not an unavailability of the Bigtable service. Other regions > are not affected. This is graceful/proportional service degradation in the > face of partial failures. There are other alternatives to Bigtable which > degrade differently given partial failures. Such options can give you no > waiting on the write path at any time and possibly no waiting on the read > path but you will lose strong consistency as the trade off. So you may get > stale answers over some (unbounded, iirc) period, but this is the choice you > make. > > HBase also has options like Stargate or the Thrift connector which can block > and retry on behalf of your clients so they are never blocked for writes. For > read path options I could look at having Stargate serve (possibly stale) > answers out of a cache -- with some flag that indicates noncanonical state -- > if that would be useful, and/or return immediate "try again" indication, so > your clients are at least not stalled. > > Best regards, > > - Andy > > > > > ________________________________ > From: Murali Krishna. P <muralikpb...@yahoo.com> > To: hbase-user@hadoop.apache.org > Sent: Wed, November 25, 2009 1:31:45 AM > Subject: HBase High Availability > > Hi, > This is regarding the region unavailability when a region server goes > down. There will be cases where we have thousands of regions per RS and it > takes considerable amount of time to redistribute the regions when a node > fails. The service will be unavailable during that period. I am evaluating > HBase for an application where we need to guarantee close to 100% > availability (namenode is still SPOF, leave that). > > One simple idea would be to replicate the regions in memory. Can we load > the same region in multiple region servers? I am not sure about the > feasibility yet, there will be issues like consistency across these in memory > replicas. Wanted to know whether there were any thoughts / work already going > on this area? I saw some related discussion here > http://osdir.com/ml/hbase-user-hadoop-apache/2009-09/msg00118.html, not sure > what is the state. > > Same needs to be done with the master as well or is it already done with ZK? > How fast is the master re-election and catalog load currently ? Do we always > have multiple masters in ready to run state? > > > Thanks, > Murali Krishna