|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.hadoop.hbase.client.HConnectionManager
@InterfaceAudience.Public @InterfaceStability.Evolving public class HConnectionManager
A non-instantiable class that manages creation of HConnection
s.
The simplest way to use this class is by using createConnection(Configuration)
.
This creates a new HConnection
to the cluster that is managed by the caller.
From this HConnection
HTableInterface
implementations are retrieved
with HConnection.getTable(byte[])
. Example:
HConnection connection = HConnectionManager.createConnection(config);
HTableInterface table = connection.getTable("table1");
try {
// Use the table as needed, for a single operation and a single thread
} finally {
table.close();
connection.close();
}
This class has a static Map of HConnection
instances keyed by
HConnectionKey
; A HConnectionKey
is identified by a set of
Configuration
properties. Invocations of getConnection(Configuration)
that pass the same Configuration
instance will return the same
HConnection
instance ONLY WHEN the set of properties are the same
(i.e. if you change properties in your Configuration
instance, such as RPC timeout,
the codec used, HBase will create a new HConnection
instance. For more details on
how this is done see HConnectionKey
).
Sharing HConnection
instances is usually what you want; all clients
of the HConnection
instances share the HConnections' cache of Region
locations rather than each having to discover for itself the location of meta, etc.
But sharing connections makes clean up of HConnection
instances a little awkward.
Currently, clients cleanup by calling deleteConnection(Configuration)
. This will
shutdown the zookeeper connection the HConnection was using and clean up all
HConnection resources as well as stopping proxies to servers out on the
cluster. Not running the cleanup will not end the world; it'll
just stall the closeup some and spew some zookeeper connection failed
messages into the log. Running the cleanup on a HConnection
that is
subsequently used by another will cause breakage so be careful running
cleanup.
To create a HConnection
that is not shared by others, you can
set property "hbase.client.instance.id" to a unique value for your Configuration
instance, like the following:
conf.set("hbase.client.instance.id", "12345");
HConnection connection = HConnectionManager.getConnection(conf);
// Use the connection to your hearts' delight and then when done...
conf.set("hbase.client.instance.id", "12345");
HConnectionManager.deleteConnection(conf, true);
Cleanup used to be done inside in a shutdown hook. On startup we'd
register a shutdown hook that called deleteAllConnections()
on its way out but the order in which shutdown hooks run is not defined so
were problematic for clients of HConnection that wanted to register their
own shutdown hooks so we removed ours though this shifts the onus for
cleanup to the client.
Nested Class Summary | |
---|---|
static class |
HConnectionManager.HConnectionImplementation
Encapsulates connection to zookeeper and regionservers. |
Field Summary | |
---|---|
static int |
MAX_CACHED_CONNECTION_INSTANCES
|
static String |
RETRIES_BY_SERVER_KEY
|
Method Summary | ||
---|---|---|
static HConnection |
createConnection(org.apache.hadoop.conf.Configuration conf)
Create a new HConnection instance using the passed conf instance. |
|
static HConnection |
createConnection(org.apache.hadoop.conf.Configuration conf,
ExecutorService pool)
Create a new HConnection instance using the passed conf instance. |
|
static HConnection |
createConnection(org.apache.hadoop.conf.Configuration conf,
ExecutorService pool,
User user)
Create a new HConnection instance using the passed conf instance. |
|
static HConnection |
createConnection(org.apache.hadoop.conf.Configuration conf,
User user)
Create a new HConnection instance using the passed conf instance. |
|
static void |
deleteAllConnections()
Deprecated. kept for backward compatibility, but the behavior is broken. HBASE-8983 |
|
static void |
deleteAllConnections(boolean staleConnection)
Deprecated. |
|
static void |
deleteConnection(org.apache.hadoop.conf.Configuration conf)
Deprecated. |
|
static void |
deleteStaleConnection(HConnection connection)
Deprecated. |
|
static
|
execute(HConnectable<T> connectable)
This convenience method invokes the given HConnectable.connect(org.apache.hadoop.hbase.client.HConnection)
implementation using a HConnection instance that lasts just for the
duration of the invocation. |
|
static Throwable |
findException(Object exception)
Look for an exception we know in the remote exception: - hadoop.ipc wrapped exceptions - nested exceptions Looks for: RegionMovedException / RegionOpeningException / RegionTooBusyException |
|
static HConnection |
getConnection(org.apache.hadoop.conf.Configuration conf)
Deprecated. |
|
static NonceGenerator |
injectNonceGeneratorForTesting(HConnection conn,
NonceGenerator cnm)
|
|
static void |
setServerSideHConnectionRetries(org.apache.hadoop.conf.Configuration c,
String sn,
org.apache.commons.logging.Log log)
Set the number of retries to use serverside when trying to communicate with another server over HConnection . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String RETRIES_BY_SERVER_KEY
public static final int MAX_CACHED_CONNECTION_INSTANCES
Method Detail |
---|
public static NonceGenerator injectNonceGeneratorForTesting(HConnection conn, NonceGenerator cnm)
conn
- The connection for which to replace the generator.cnm
- Replaces the nonce generator used, for testing.
@Deprecated public static HConnection getConnection(org.apache.hadoop.conf.Configuration conf) throws IOException
conf
configuration instance.
If no current connection exists, method creates a new connection and keys it using
connection-specific properties from the passed Configuration
; see
HConnectionKey
.
conf
- configuration
conf
ZooKeeperConnectionException
IOException
public static HConnection createConnection(org.apache.hadoop.conf.Configuration conf) throws IOException
conf
instance.
Note: This bypasses the usual HConnection life cycle management done by
getConnection(Configuration)
. The caller is responsible for
calling Closeable.close()
on the returned connection instance.
This is the recommended way to create HConnections.
HConnection connection = HConnectionManager.createConnection(conf);
HTableInterface table = connection.getTable("mytable");
table.get(...);
...
table.close();
connection.close();
conf
- configuration
conf
ZooKeeperConnectionException
IOException
public static HConnection createConnection(org.apache.hadoop.conf.Configuration conf, ExecutorService pool) throws IOException
conf
instance.
Note: This bypasses the usual HConnection life cycle management done by
getConnection(Configuration)
. The caller is responsible for
calling Closeable.close()
on the returned connection instance.
This is the recommended way to create HConnections.
ExecutorService pool = ...;
HConnection connection = HConnectionManager.createConnection(conf, pool);
HTableInterface table = connection.getTable("mytable");
table.get(...);
...
table.close();
connection.close();
conf
- configurationpool
- the thread pool to use for batch operation in HTables used via this HConnection
conf
ZooKeeperConnectionException
IOException
public static HConnection createConnection(org.apache.hadoop.conf.Configuration conf, User user) throws IOException
conf
instance.
Note: This bypasses the usual HConnection life cycle management done by
getConnection(Configuration)
. The caller is responsible for
calling Closeable.close()
on the returned connection instance.
This is the recommended way to create HConnections.
ExecutorService pool = ...;
HConnection connection = HConnectionManager.createConnection(conf, pool);
HTableInterface table = connection.getTable("mytable");
table.get(...);
...
table.close();
connection.close();
conf
- configurationuser
- the user the connection is for
conf
ZooKeeperConnectionException
IOException
public static HConnection createConnection(org.apache.hadoop.conf.Configuration conf, ExecutorService pool, User user) throws IOException
conf
instance.
Note: This bypasses the usual HConnection life cycle management done by
getConnection(Configuration)
. The caller is responsible for
calling Closeable.close()
on the returned connection instance.
This is the recommended way to create HConnections.
ExecutorService pool = ...;
HConnection connection = HConnectionManager.createConnection(conf, pool);
HTableInterface table = connection.getTable("mytable");
table.get(...);
...
table.close();
connection.close();
conf
- configurationpool
- the thread pool to use for batch operation in HTables used via this HConnectionuser
- the user the connection is for
conf
ZooKeeperConnectionException
IOException
public static void deleteConnection(org.apache.hadoop.conf.Configuration conf)
conf
- configuration whose identity is used to find HConnection
instance.public static void deleteStaleConnection(HConnection connection)
connection
- public static void deleteAllConnections(boolean staleConnection)
@Deprecated public static void deleteAllConnections()
@InterfaceAudience.Private public static <T> T execute(HConnectable<T> connectable) throws IOException
HConnectable.connect(org.apache.hadoop.hbase.client.HConnection)
implementation using a HConnection
instance that lasts just for the
duration of the invocation.
T
- the return type of the connect methodconnectable
- the HConnectable
instance
IOException
public static Throwable findException(Object exception)
public static void setServerSideHConnectionRetries(org.apache.hadoop.conf.Configuration c, String sn, org.apache.commons.logging.Log log)
HConnection
. Used updating catalog
tables, etc. Call this method before we create any Connections.
c
- The Configuration instance to set the retries into.log
- Used to log what we set in here.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |