hadoop - what difference of managed and unmanaged hconnection in hbase? -


when tried create htable instance in way.

configuration conf = hbaseconfiguration.create(); hconnection conn = hconnectionmanager.getconnection(conf); conn.gettable("table_name"); 

then got exception.

    @override     public htableinterface gettable(tablename tablename, executorservice pool) throws ioexception {       if (managed) {         throw new ioexception("the connection has unmanaged.");       }       return new htable(tablename, this, pool);     } 

so , wants know concrete reflection of managed , 'unmanaged' hconnection?

before call hconnectionmanager.getconnection have create connection using hconnectionmanager.createconnection passing earlier created hbaseconfiguration instance. hconnectionmanager.getconnection return connection exists. bit of hconnectionmanager javadoc how handle connection pool:

this class has static map of hconnection instances keyed by configuration; invocations of getconnection(configuration) that pass sameconfiguration instance returned samehconnection instance

in case, can create connection using hconnectionmanager.createconnection , use returned connection open htable

edit:

@ifiddddddbest, found javadocs hconnectionimplementation has description of managed flag(may understand):

@param managed if true, not full shutdown on close; i.e. cleanup of connection zk , shutdown of services; close down resources connection responsible , decrement usage counters. caller full cleanup. set when want have connection sharing going on -- reuse of zk connection, , cached region locations, established regionserver connections, etc. when connections shared, have reference counting going on , full cleanup when no more users of hconnectionimplementation instance.

in newer versions of hbase(>1.0), managed flag disappeared , connection management on client side,e.g. client responsible close , if this, close internal connections zk,to hbase master, etc, not decrease reference counter.


Comments

Popular posts from this blog

Django REST Framework perform_create: You cannot call `.save()` after accessing `serializer.data` -

Why does Go error when trying to marshal this JSON? -