Hi Ryan,
  Thanks for the quick response. 

    We are planing have this in 2 or 3 data centers for BCP and latency 
reasons. Currently application runs in a non-scalable cluster, essentially we 
have the data partitioned across multiple fixed columns. The entire cluster of 
machines can be considered as m row vs n column setup. The rows ensures the 
availability and columns (machines) ensures distribution/partition. As you see, 
even if m-1 box goes down in a column, the availability is 100%. (By 
availability, I meant all the documents in the cluster are available) So, 
suppose we need 20 machines to hold the data, with 40 machines, we are highly 
available. Obviosly we have the data in the other data center, but with a 
higher latency. We will take the hit only if all of the replicas fails in one 
data center.


  I have a hbase table which created via mapred tool, took almost 1 hour to 
load by the loadtable.rb script and to be available for serving. The scale was 
8k regions per server.  I am on 0.20.1, r822817 though. I am yet to test the 
failure case, but it will take around 1hour/ no.of RS to redistribute? As you 
said, i will try this in 0.21.

I understand that it is difficult to achive availability in a distributed 
system, but the problem is solved in hdfs by replicating data across data 
nodes. That is why I thought we should do the same thing in hbase with 
replicated regions. We need to ensure that the data is never missing. May be we 
can afford 1-2 mins not mare than that. I can definitely redirect the request 
to the other data center if there is an region unavailable exception, but has a 
higher latency as mentioned. 

 The muti RS solution will require double the memory which is not a problem for 
users who needs region repl > one. Another idea was that the hbase should 
create 2 records for each key, like key#1 and key#2 and some how ensure that 
they go to different region servers. If key#1 request fails, key#2 can be used 
and vise versa. In a steady state, we can round robin to distribute the load. 
But the problem here is that , we are replicating the data also, which will 
need double the disk space? So, if some how we can replicate the in region 
index but not the data, it will be great.

Thanks,
Murali Krishna




________________________________
From: Ryan Rawson <ryano...@gmail.com>
To: hbase-user@hadoop.apache.org
Sent: Wed, 25 November, 2009 3:25:20 PM
Subject: Re: HBase High Availability

With multiple masters, the election is mediated by zookeeper and the
idle masters are awaiting the relection cycle.

The problems with brining regions up after a failure isnt the actual
speed of loading them, but bugs with the master.  This is being fixed
in 0.21. It will allow us to much more rapidly bring regions back
online after a failure.

As for loading a region across multiple servers, this would have to be
thought about quite carefully to see if it is possible. Right now
there is a substantial amount of state loaded that would be changed by
other servers, and you would still have to reload that state anyways.

We also need to ask ourselves, what does "availability" mean anyways?
For example, if a regionserver failed, does that mean hbase is
offline? The answer would have to be a "no", but certain sections of
data might be offline temporarily. Thus HBase has 100% uptime by this
definition, correct?

In the annals of distributed computing, you are only protected with
minimal downtime from limited hardware failures.  Once you take out
too many nodes, things start failing, that is a given. HBase solves
the data scalability problem, it solves the limited machine failure
problem.

I highly suggest this presentation:
http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf

BTW, what is your budget for "near 100% uptime" anyways?  How many
datacenters did you plan on using?

On Wed, Nov 25, 2009 at 1:31 AM, Murali Krishna. P
<muralikpb...@yahoo.com> wrote:
> 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
>

Reply via email to