Interface Connection

All Superinterfaces:
Abortable, AutoCloseable, Closeable
All Known Implementing Classes:
ConnectionOverAsyncConnection, SharedConnection, ThriftConnection

@Public public interface Connection extends Abortable, Closeable
A cluster connection encapsulating lower level individual connections to actual servers and a connection to zookeeper. Connections are instantiated through the ConnectionFactory class. The lifecycle of the connection is managed by the caller, who has to close() the connection to release the resources.

The connection object contains logic to find the master, locate regions out on the cluster, keeps a cache of locations and then knows how to re-calibrate after they move. The individual connections to servers, meta cache, zookeeper connection, etc are all shared by the Table and Admin instances obtained from this connection.

Connection creation is a heavy-weight operation. Connection implementations are thread-safe, so that the client can create a connection once, and share it with different threads. Table and Admin instances, on the other hand, are light-weight and are not thread-safe. Typically, a single connection per client application is instantiated and every thread will obtain its own Table instance. Caching or pooling of Table and Admin is not recommended.

Since:
0.99.0
See Also:
  • Method Details

    • getConfiguration

      org.apache.hadoop.conf.Configuration getConfiguration()
      Returns Configuration instance being used by this Connection instance.
    • getTable

      default Table getTable(TableName tableName) throws IOException
      Retrieve a Table implementation for accessing a table. The returned Table is not thread safe, a new instance should be created for each using thread. This is a lightweight operation, pooling or caching of the returned Table is neither required nor desired.

      The caller is responsible for calling Table.close() on the returned table instance.

      Since 0.98.1 this method no longer checks table existence. An exception will be thrown if the table does not exist only when the first operation is attempted.

      Parameters:
      tableName - the name of the table
      Returns:
      a Table to use for interactions with this table
      Throws:
      IOException
    • getTable

      default Table getTable(TableName tableName, ExecutorService pool) throws IOException
      Retrieve a Table implementation for accessing a table. The returned Table is not thread safe, a new instance should be created for each using thread. This is a lightweight operation, pooling or caching of the returned Table is neither required nor desired.

      The caller is responsible for calling Table.close() on the returned table instance.

      Since 0.98.1 this method no longer checks table existence. An exception will be thrown if the table does not exist only when the first operation is attempted.

      Parameters:
      tableName - the name of the table
      pool - The thread pool to use for batch operations, null to use a default pool.
      Returns:
      a Table to use for interactions with this table
      Throws:
      IOException
    • getBufferedMutator

      Retrieve a BufferedMutator for performing client-side buffering of writes. The BufferedMutator returned by this method is thread-safe. This BufferedMutator will use the Connection's ExecutorService. This object can be used for long lived operations.

      The caller is responsible for calling BufferedMutator.close() on the returned BufferedMutator instance.

      This accessor will use the connection's ExecutorService and will throw an exception in the main thread when an asynchronous exception occurs.

      Parameters:
      tableName - the name of the table
      Returns:
      a BufferedMutator for the supplied tableName.
      Throws:
      IOException
    • getBufferedMutator

      Retrieve a BufferedMutator for performing client-side buffering of writes. The BufferedMutator returned by this method is thread-safe. This object can be used for long lived table operations. The caller is responsible for calling BufferedMutator.close() on the returned BufferedMutator instance.
      Parameters:
      params - details on how to instantiate the BufferedMutator.
      Returns:
      a BufferedMutator for the supplied tableName.
      Throws:
      IOException
    • getRegionLocator

      Retrieve a RegionLocator implementation to inspect region information on a table. The returned RegionLocator is not thread-safe, so a new instance should be created for each using thread. This is a lightweight operation. Pooling or caching of the returned RegionLocator is neither required nor desired.
      The caller is responsible for calling Closeable.close() on the returned RegionLocator instance. RegionLocator needs to be unmanaged
      Parameters:
      tableName - Name of the table who's region is to be examined
      Returns:
      A RegionLocator instance
      Throws:
      IOException
    • clearRegionLocationCache

      Clear all the entries in the region location cache, for all the tables.

      If you only want to clear the cache for a specific table, use RegionLocator.clearRegionLocationCache().

      This may cause performance issue so use it with caution.

    • getAdmin

      Retrieve an Admin implementation to administer an HBase cluster. The returned Admin is not guaranteed to be thread-safe. A new instance should be created for each using thread. This is a lightweight operation. Pooling or caching of the returned Admin is not recommended.
      The caller is responsible for calling Admin.close() on the returned Admin instance.
      Returns:
      an Admin instance for cluster administration
      Throws:
      IOException
    • close

      void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • isClosed

      boolean isClosed()
      Returns whether the connection is closed or not.
      Returns:
      true if this connection is closed
    • getTableBuilder

      Returns an TableBuilder for creating Table.
      Parameters:
      tableName - the name of the table
      pool - the thread pool to use for requests like batch and scan
    • toAsyncConnection

      Convert this connection to an AsyncConnection.

      Usually we will return the same instance if you call this method multiple times so you can consider this as a light-weighted operation.

    • getClusterId

      default String getClusterId()
      Returns the cluster ID unique to this HBase cluster.
      The default implementation is added to keep client compatibility.
    • getHbck

      @LimitedPrivate("HBCK") default Hbck getHbck() throws IOException
      Retrieve an Hbck implementation to fix an HBase cluster. The returned Hbck is not guaranteed to be thread-safe. A new instance should be created by each thread. This is a lightweight operation. Pooling or caching of the returned Hbck instance is not recommended.
      The caller is responsible for calling Closeable.close() on the returned Hbck instance.
      This will be used mostly by hbck tool.
      Returns:
      an Hbck instance for active master. Active master is fetched from the zookeeper.
      Throws:
      IOException
    • getHbck

      @LimitedPrivate("HBCK") default Hbck getHbck(ServerName masterServer) throws IOException
      Retrieve an Hbck implementation to fix an HBase cluster. The returned Hbck is not guaranteed to be thread-safe. A new instance should be created by each thread. This is a lightweight operation. Pooling or caching of the returned Hbck instance is not recommended.
      The caller is responsible for calling Closeable.close() on the returned Hbck instance.
      This will be used mostly by hbck tool. This may only be used to by pass getting registered master from ZK. In situations where ZK is not available or active master is not registered with ZK and user can get master address by other means, master can be explicitly specified.
      Parameters:
      masterServer - explicit ServerName for master server
      Returns:
      an Hbck instance for a specified master server
      Throws:
      IOException