thanks ted..

Are there any best practices around usage of HTablePool? For a code
structure like this

HTablePool pool = new HTablePool();
String tableName="table";

public void log(query) throws Exception {

   HTable table = pool.getTable(Bytes.toBytes(tableName);
   ...
   ...
   //done
   pool.putTable(Bytes.toBytes(tableName);

}

executed under heavy loads by n-threads. Is there anything I need to be
worried about?

On Thu, Jul 21, 2011 at 11:21 AM, Ted Yu <[email protected]> wrote:

> Please reuse HTable instances through HTablePool.
>
>
>
> On Jul 21, 2011, at 10:08 AM, large data <[email protected]> wrote:
>
> > thanks Doug...so you saying something like this called from diff threads
> in
> > a fairly loaded system would not be much of a concern?
> >
> >    log(String something){
> >     HTable htable = new HTable();
> >     htable.incrementColumnValue(key,columnFamily,columnQualifier,1L);
> >     }
> >
> >
> > On Thu, Jul 21, 2011 at 10:01 AM, Doug Meil
> > <[email protected]>wrote:
> >
> >>
> >> re:  "Now creating an instance of an Htable is quite expensive on a per
> >> thread basis."
> >>
> >> Connection/metadata is managed statically.  Creating Htables instances
> >> isn't that heavyweight.
> >>
> >>
> >>
> >>
> >>
> >> On 7/21/11 11:30 AM, "large data" <[email protected]> wrote:
> >>
> >>> Thanks Doug! this is very informative. Now creating an instance of an
> >>> HTable
> >>> is quite expensive on a per thread basis. Reading through the docs I
> found
> >>> this
> >>>
> >>
> http://hbase.apache.org/apidocs/index.html?org/apache/hadoop/hbase/client/
> >>> HTablePool.html
> >>>
> >>> Are there any best practices using HTablePool? HTablePool
> >>> sounds analogous to DB connection pools to me but I am not sure how
> >>> HTablePool.get() would work under multithreaded environment.
> >>>
> >>> thanks
> >>>
> >>>
> >>> On Wed, Jul 20, 2011 at 6:28 PM, Doug Meil
> >>> <[email protected]>wrote:
> >>>
> >>>>
> >>>> Hi there-
> >>>>
> >>>> I think there are two subjects here:
> >>>>
> >>>>
> >>>> 1)  the fact that HTable isn't thread-safe
> >>>>
> >>>> 2)  how counters work
> >>>>
> >>>> Even if you are incrementing counters, you shouldn't be sharing HTable
> >>>> instances across threads.
> >>>>
> >>>> Counters get updated atomically on the RS, not on the client.
> >>>>
> >>>> Counter behavior isn't in the Hbase book and it needs to be.  I'll add
> >>>> it
> >>>> to the list.
> >>>>
> >>>>
> >>>> On 7/20/11 7:44 PM, "large data" <[email protected]> wrote:
> >>>>
> >>>>> I have an HTable instance instantiated as part of a singleton
> service.
> >>>>> This
> >>>>> singleton service is called from different threads from different
> >>>> parts of
> >>>>> the app. Reading through the HTable docs suggests not to use single
> >>>> HTable
> >>>>> instance for updates, if it's true how can incrementColumnValue
> provide
> >>>>> thread safety?
> >>>>>
> >>>>> thanks
> >>>>
> >>>>
> >>
> >>
>

Reply via email to