Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
HBase, mail # user - Insert blocked


+
Mohit Anchlia 2012-07-23, 22:48
+
Elliott Clark 2012-07-23, 22:54
+
Mohit Anchlia 2012-07-23, 23:15
+
Mohit Anchlia 2012-07-24, 00:41
+
Asaf Mesika 2012-07-24, 06:11
+
Lyska Anton 2012-07-24, 10:09
Copy link to this message
-
Re: Insert blocked
Mohit Anchlia 2012-07-24, 17:00
On Tue, Jul 24, 2012 at 3:09 AM, Lyska Anton <[EMAIL PROTECTED]> wrote:

> Hi,
>
> after first insert you are closing your table in finally block. thats why
> thread hangs
>

I thought I need to close HTableInterface to return it back to the pool. Is
that not the case?

>
> 24.07.2012 3:41, Mohit Anchlia пишет:
>
>> I am now using HTablePool but still the call hangs at "put". My code is
>> something like this:
>>
>>
>> hTablePool = *new* HTablePool(config,*MAX_POOL_**SIZE*);
>>
>> result = *new* SessionTimelineDAO(hTablePool.**getTable(t.name()),
>> ColumnFamily.*S_T_MTX*);
>>
>>    public SessionTimelineDAO(**HTableInterface hTableInterface,
>> ColumnFamily
>> cf){
>>    this.tableInt = hTableInterface;
>>    this.cf = cf.name().getBytes();
>>    log.info("Table " + hTableInterface + " " + cf);
>>   }
>>
>>   @Override
>>   public void create(DataStoreModel dm) throws DataStoreException {
>>    if(null == dm || null == dm.getKey()){
>>     log.error("DataStoreModel is invalid");
>>     return;
>>    }
>>
>>    Put p = new Put(dm.getKey().array());
>>
>>    for(ByteBuffer bf : dm.getCols().keySet()){
>>     p.add(cf, bf.array(), dm.getColumnValue(bf).array())**;
>>    }
>>
>>    try {
>>     log.info("In create ");
>>     tableInt.put(p);
>>    } catch (IOException e) {
>>     log.error("Error writing " , e);
>>     throw new DataStoreException(e);
>>    } finally{
>>     cleanUp();
>>
>>    }
>>   }
>>
>>
>>   private void cleanUp() {
>>    if(null != tableInt){
>>     try {
>>      tableInt.close();
>>     } catch (IOException e) {
>>      log.error("Failed while closing table interface", e);
>>     }
>>    }
>>   }
>> On Mon, Jul 23, 2012 at 4:15 PM, Mohit Anchlia <[EMAIL PROTECTED]
>> >wrote:
>>
>>
>>>   On Mon, Jul 23, 2012 at 3:54 PM, Elliott Clark <[EMAIL PROTECTED]
>>> >wrote:
>>>
>>> HTable is not thread safe[1]. It's better to use HTablePool if you want
>>>> to
>>>> share things across multiple threads.[2]
>>>>
>>>> 1
>>>> http://hbase.apache.org/**apidocs/org/apache/hadoop/**
>>>> hbase/client/HTable.html<http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html>
>>>> 2
>>>>
>>>> http://hbase.apache.org/**apidocs/org/apache/hadoop/**
>>>> hbase/client/HTablePool.html<http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTablePool.html>
>>>>
>>>> Thanks! I'll change my code to use HtablePool
>>>> On Mon, Jul 23, 2012 at 3:48 PM, Mohit Anchlia <[EMAIL PROTECTED]
>>>>
>>>>> wrote:
>>>>> I am writing a stress tool to test my specific use case. In my current
>>>>> implementation HTable is a global static variable that I initialize
>>>>> just
>>>>> once and use it accross multiple threads. Is this ok?
>>>>>
>>>>> My row key consists of (timestamp - (timestamp % 1000)) and cols are
>>>>> counters. What I am seeing is that when I run my test after first row
>>>>> is
>>>>> created the application just hangs. I just wanted to check if there are
>>>>> obvious things that I should watch out for.
>>>>>
>>>>> I am currently testing few threads in eclipse, but I'll still try and
>>>>> generate stackTrace
>>>>>
>>>>>
>>>
>
+
Mohit Anchlia 2012-07-24, 19:27
+
lars hofhansl 2012-07-24, 05:29
+
Elliott Clark 2012-07-24, 19:55
+
Mohit Anchlia 2012-07-24, 20:04
+
lars hofhansl 2012-07-25, 00:43