Thrift Architecture - Try #2

Showing 1-2 of 2 messages
Thrift Architecture - Try #2 Bob Smith 12/27/11 7:12 AM
Sorry, my first post’s image link was broken. Trying again:

I am trying to figure out the best way to architect access to an HBase
cluster from a multi-user system that has potentially thousands of
processes all potentially reading and writing data from/to HBase. The
multi-user system is a collection of processes written in C or C++
(essentially a client-server system, not web or java-based). Since the
system is not Java or web-based, I need to come up with a way to allow
these thousands of processes to efficiently access the DB without either 1)
creating thousands of Thrift servers, or 2) building and destroying an
HBase connection for each access.

The link below is one way I could see to do it. Each C/C++ process would
need to create a protocol/client connection to a random Thrift server each
time it wanted to interact with HBase, but the Thrift servers would at
least have regionserver and HTable info cached so they don't need to start
up each time.

Am I thinking about the Thrift client-server setup for HBase correctly?

Does this seem like a good approach? If I have, say, a few dozen Thrift
server instances for a thousand users, will the requests through the 90XX
sockets block and buffer correctly so the Thrift servers will be pooled in
the eyes of the C/C++ processes? Thanks for any help you can provide.

https://picasaweb.google.com/104729910485073585265/Thrift#5690550152993731778

Re: Thrift Architecture - Try #2 Stack 12/27/11 3:31 PM
On Tue, Dec 27, 2011 at 7:12 AM, Bob Smith <oke...@gmail.com> wrote:
> Am I thinking about the Thrift client-server setup for HBase correctly?
>

Yes.

> Does this seem like a good approach? If I have, say, a few dozen Thrift
> server instances for a thousand users, will the requests through the 90XX
> sockets block and buffer correctly so the Thrift servers will be pooled in
> the eyes of the C/C++ processes? Thanks for any help you can provide.
>

Should work.  Our frontend, SU's, which is php, gets to backend hbase
cluster via thrift.  There are 'thousands' of connections from the
front-end into the cluster.   You can scale the thriftserver layer
with load independing of your middle-tier and hbase cluster scaling.
Run the thrift servers on the middle-tier servers or on the hbase
cluster nodes.  The thing to watch out for is lack-of-bounds on thrift
thread count but this has been fixed in hbase TRUNK IIRC (if you can't
find issue, ask and will dig).

St.Ack