hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Daniel Cryans <jdcry...@apache.org>
Subject Re: HBase as DB tier for Tomcat - best practices to instantiate HTables?
Date Sat, 16 Jan 2010 01:40:14 GMT
You want to keep using a pool of HTables, see
http://hadoop.apache.org/hbase/docs/r0.20.2/api/org/apache/hadoop/hbase/client/HTablePool.html

J-D

On Fri, Jan 15, 2010 at 5:35 PM, Jeyendran Balakrishnan
<jbalakrishnan@docomolabs-usa.com> wrote:
> What's the best way to instantiate HTables when the HBase cluster is
> being accessed from client code running inside a Tomcat web app? The web
> app dooes the typical CRUD operations [but no table alteration].
>
> I read from the lists some time ago that instantiating a HTable in
> servlet request is not advisable, since instantiating HTable is a bit
> slow [accesses the meta regions?].
>
> So is the best practice for web apps to instantiate a HTable once at
> startup and cache in the servlet context, and re-use it every request?
>
> In that case, is this thread safe [since each request spawns a different
> thread]? On the other hand, syncing on the single HTable instance at the
> web application level also slows down requests when contending for this
> one instance.
>
> Also, is holding on to a single HTable instance in a long-running web
> app a reliable approach?
>
> Or is it better to bite the bullet and instantiate an HTable per request
> after all?
>
> Finally, has anybody looked into or have some kind of HTable pool [like
> DB connection pools], which is a sort of medium between one HTable per
> web app and one HTable per request?
>
> Any advice on best practices from the community would be greatly
> appreciated.
>
> Thanks,
> Jeyendran
>
>

Mime
View raw message