hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eason Lee <softse....@gmail.com>
Subject Re: HBaseAdmin needs a close methord
Date Thu, 19 Apr 2012 08:01:17 GMT
I see, thanks to all~~

> Hi,
>
> fwiw, the "close" method was added in HBaseAdmin for HBase 0.90.5.
>
> N.
>
> On Thu, Apr 19, 2012 at 8:09 AM, Eason Lee<softse.com@gmail.com>  wrote:
>
>> I don't think this issue can resovle the problem
>> ZKWatcher is removed,but the configuration and HConnectionImplementation
>> objects are still in HConnectionManager
>> this may still cause memery leak
>>
>> but calling HConnectionManager.**deleteConnection may resolve HBASE-5073
>> problem.
>> I can see
>>
>>       if (this.zooKeeper != null) {
>>         LOG.info("Closed zookeeper sessionid=0x" +
>>           Long.toHexString(this.**zooKeeper.getZooKeeper().**
>> getSessionId()));
>>         this.zooKeeper.close();
>>         this.zooKeeper = null;
>>       }
>>
>> in HConnectionImplementation.**close which is called by
>> HConnectionManager.**deleteConnection
>>
>>
>>
>>
>>   Hi Lee
>>>
>>> Is HBASE-5073 resolved in that release?
>>>
>>> Regards
>>> Ram
>>>
>>>   -----Original Message-----
>>>> From: Eason Lee [mailto:softse.com@gmail.com]
>>>> Sent: Thursday, April 19, 2012 10:40 AM
>>>> To: user@hbase.apache.org
>>>> Subject: Re: HBaseAdmin needs a close methord
>>>>
>>>> I am using cloudera's cdh3u3
>>>>
>>>>> Hi Lee
>>>>>
>>>>> Which version of HBase are you using?
>>>>>
>>>>> Regards
>>>>> Ram
>>>>>
>>>>>   -----Original Message-----
>>>>>> From: Eason Lee [mailto:softse.com@gmail.com]
>>>>>> Sent: Thursday, April 19, 2012 9:36 AM
>>>>>> To: user@hbase.apache.org
>>>>>> Subject: HBaseAdmin needs a close methord
>>>>>>
>>>>>> Resently, my app meets a problem list as follows
>>>>>>
>>>>>> Can't construct instance of class
>>>>>> org/apache/hadoop/hbase/**client/HBaseAdmin
>>>>>> Exception in thread "Thread-2" java.lang.OutOfMemoryError: unable
to
>>>>>> create new native thread
>>>>>> at java.lang.Thread.start0(Native Method)
>>>>>> at java.lang.Thread.start(Thread.**java:640)
>>>>>> at org.apache.zookeeper.**ClientCnxn.start(ClientCnxn.**java:414)
>>>>>> at org.apache.zookeeper.**ZooKeeper.<init>(ZooKeeper.**java:378)
>>>>>> at org.apache.hadoop.hbase.**zookeeper.ZKUtil.connect(**
>>>>>> ZKUtil.java:97)
>>>>>> at
>>>>>>
>>>>>>   org.apache.hadoop.hbase.**zookeeper.ZooKeeperWatcher.<**
>>>> init>(ZooKeeperWatc
>>>>
>>>>> her.java:119)
>>>>>> at
>>>>>>
>>>>>>   org.apache.hadoop.hbase.**client.HConnectionManager$**
>>>> HConnectionImplementa
>>>>
>>>>> tion.getZooKeeperWatcher(**HConnectionManager.java:1002)
>>>>>> at
>>>>>>
>>>>>>   org.apache.hadoop.hbase.**client.HConnectionManager$**
>>>> HConnectionImplementa
>>>>
>>>>> tion.setupZookeeperTrackers(**HConnectionManager.java:304)
>>>>>> at
>>>>>>
>>>>>>   org.apache.hadoop.hbase.**client.HConnectionManager$**
>>>> HConnectionImplementa
>>>>
>>>>> tion.<init>(**HConnectionManager.java:295)
>>>>>> at
>>>>>>
>>>>>>   org.apache.hadoop.hbase.**client.HConnectionManager.**
>>>> getConnection(HConnec
>>>>
>>>>> tionManager.java:157)
>>>>>> at
>>>>>>
>>>>> org.apache.hadoop.hbase.**client.HBaseAdmin.<init>(**
>>>> HBaseAdmin.java:90)
>>>>
>>>>> Call to org.apache.hadoop.hbase.**HBaseAdmin::HBaseAdmin failed!
>>>>>>
>>>>>> My app create HBaseAdmin every 30s,and the threads used by my app
>>>>>> increases about 1thread/30s.See from the stack, there is only one
>>>>>> HBaseAdmin in Memory, but lots of Configuration and
>>>>>> HConnectionImplementation instances.
>>>>>>
>>>>>> I can see from the sources, everytime when HBaseAdmin is created,
a
>>>>>>
>>>>> new
>>>>
>>>>> Configuration and HConnectionImplementation is created and added to
>>>>>> HConnectionManager.HBASE_**INSTANCES.So<http://HConnectionManager.HBASE_INSTANCES.So>they
are not collected by gc
>>>>>>
>>>>> when
>>>>
>>>>> HBaseAdmin is collected.
>>>>>>
>>>>>> So i think we need to add a close methord to remove the
>>>>>> Configuration&**HConnectionImplementation from
>>>>>> HConnectionManager.HBASE_**INSTANCES.Just as follows:
>>>>>>
>>>>>> public void close(){
>>>>>>         HConnectionManager.**deleteConnection(**getConfiguration(),
>>>>>> true);
>>>>>> }
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>>
>



Mime
View raw message