hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ramkrishna S Vasudevan <ramakrish...@huawei.com>
Subject HBASE-4138
Date Mon, 25 Jul 2011 14:26:14 GMT
Hi
 
1. I tried to identify the problem in HBASE-4138.  I ended up in the
following analysis, 

The HMaster creates the BASENODE along with unassigned node, RS node and
table node based on 
the zookeeper.znode.parent property. 

Currently when we use the HTable() as part of getConnection() if the this
value is  not configured 
we tend to create a new connection. 

Two points to not here is - 
1)The HTable documentation clearly states us to use the same configuration
object. 

But what if its not done, particularly someone forgets to set this base node
property.  Even it may be 
like in my RS instance i have configured the property but not in the master
instance. 

2)The reuse of the getConnection() logic across all levels, was it intended
? 

The major problem lies in the the
HConnectionManager.setupZookeeperTrackers() which tries to 
create the BASENODES again. 

What i feel here is,
 this should not be done as only the master should have the rights to create
it else there are 
high possibility that muliple basenodes can be created. 

Currently as the Client creates the node once again with the default value
'/hbase' 
the client keeps waiting to know the root location indefinitely. 

What happens in the Admin case: 
The same thing happens in admin case but in HBaseAdmin() we call the
connection.getMaster api 
which throws an exception.   
'ZooKeeper available but no active master location found' 

So we should prevent the Admin or HTable (In general any client even RS )
from creating the 
base nodes and what ever is created by the master should be used by the
clients.
 
Regards
Ram

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message