Interface | Description |
---|---|
Admin |
The administrative API for HBase.
|
AsyncProcess.AsyncRequestFuture |
The context used to wait for results from one submit call.
|
Attributes | |
BufferedMutator |
Used to communicate with a single HBase table similar to
Table but meant for
batched, asynchronous puts. |
BufferedMutator.ExceptionListener |
Listens for asynchronous exceptions on a
BufferedMutator . |
Cancellable |
This should be implemented by the Get/Scan implementations that
talk to replica regions.
|
ClusterConnection |
Internal methods on Connection that should not be used by user code.
|
ClusterStatusListener.DeadServerHandler |
Class to be extended to manage a new dead server.
|
ClusterStatusListener.Listener |
The interface to be implemented by a listener of a cluster status event.
|
Connection |
A cluster connection encapsulating lower level individual connections to actual servers and
a connection to zookeeper.
|
HBaseAdmin.ProcedureFuture.WaitForStateCallable | |
HConnection | Deprecated
in favor of
Connection and ConnectionFactory |
HTableInterface | Deprecated
use
Table instead |
HTableInterfaceFactory | Deprecated
in favor of
ConnectionFactory and Connection . |
MasterKeepAliveConnection |
A KeepAlive connection is not physically closed immediately after the close,
but rather kept alive for a few minutes.
|
MetaScanner.MetaScannerVisitor |
Visitor class called to process each row of the hbase:meta table
|
MetricsConnection.NewMetric<T> |
A lambda for dispatching to the appropriate metric factory method
|
NonceGenerator |
NonceGenerator interface.
|
RegionLocator |
Used to view region location information for a single HBase table.
|
Registry |
Cluster registry.
|
ResultScanner |
Interface for client-side scanning.
|
RetryingCallable<T> |
A Callable<T> that will be retried.
|
Row |
Has a row.
|
Table |
Used to communicate with a single HBase table.
|
Class | Description |
---|---|
AbstractClientScanner |
Helper class for custom client scanners.
|
Action<R> |
A Get, Put, Increment, Append, or Delete associated with it's region.
|
Append |
Performs Append operations on a single row.
|
AsyncProcess |
This class allows a continuous flow of requests.
|
AsyncProcess.BatchErrors | |
AsyncProcess.ReplicaResultState |
Sync point for calls to multiple replicas for the same user request (Get).
|
BufferedMutatorImpl |
Used to communicate with a single HBase table similar to
HTable
but meant for batched, potentially asynchronous puts. |
BufferedMutatorParams |
Parameters for instantiating a
BufferedMutator . |
ClientIdGenerator |
The class that is able to determine some unique strings for the client,
such as an IP address, PID, and composite deterministic ID.
|
ClientScanner |
Implements the scanner interface for the HBase client.
|
ClientSideRegionScanner |
A client scanner for a region opened for read-only on the client side.
|
ClientSmallReversedScanner |
Client scanner for small reversed scan.
|
ClientSmallReversedScanner.SmallReversedScannerCallable |
A reversed ScannerCallable which supports backward small scanning.
|
ClientSmallReversedScanner.SmallReversedScannerCallableFactory | |
ClientSmallScanner |
Client scanner for small scan.
|
ClientSmallScanner.SmallScannerCallable | |
ClientSmallScanner.SmallScannerCallableFactory | |
ClusterStatusListener |
A class that receives the cluster status, and provide it as a set of service to the client.
|
ConnectionAdapter | Deprecated |
ConnectionConfiguration |
Configuration parameters for the connection.
|
ConnectionFactory |
A non-instantiable class that manages creation of
Connection s. |
ConnectionManager |
An internal, non-instantiable class that manages creation of
HConnection s. |
ConnectionManager.HConnectionImplementation |
Encapsulates connection to zookeeper and regionservers.
|
ConnectionManager.HConnectionImplementation.MasterServiceState |
State of the MasterService connection/setup.
|
ConnectionManager.NoNonceGenerator |
Dummy nonce generator for disabled nonces.
|
ConnectionManager.ServerErrorTracker |
The record of errors for servers.
|
ConnectionManager.ServerErrorTracker.ServerErrors |
The record of errors for a server.
|
ConnectionUtils |
Utility used by client connections.
|
ConnectionUtils.MasterlessConnection |
Some tests shut down the master.
|
CoprocessorHConnection |
Connection to an HTable from within a Coprocessor.
|
DelayingRunner<T> |
A wrapper for a runnable for a group of actions for a single regionserver.
|
DelegatingRetryingCallable<T,D extends RetryingCallable<T>> |
Helper callable for internal use when you just want to override a single method of a
RetryingCallable . |
Delete |
Used to perform Delete operations on a single row.
|
FailureInfo |
Keeps track of repeated failures to any region server.
|
FastFailInterceptorContext | |
FlushRegionCallable |
A Callable for flushRegion() RPC.
|
Get |
Used to perform Get operations on a single row.
|
HBaseAdmin |
HBaseAdmin is no longer a client API.
|
HBaseAdmin.AbortProcedureFuture | |
HBaseAdmin.CreateTableFuture | |
HBaseAdmin.DeleteTableFuture | |
HBaseAdmin.DisableTableFuture | |
HBaseAdmin.EnableTableFuture | |
HBaseAdmin.ProcedureFuture<V> |
Future that waits on a procedure result.
|
HBaseAdmin.ThrowableAbortable |
Simple
Abortable , throwing RuntimeException on abort. |
HConnectable<T> |
This class makes it convenient for one to execute a command in the context
of a
HConnection instance based on the given Configuration . |
HConnectionKey |
Denotes a unique key to an
HConnection instance. |
HConnectionManager | Deprecated
Please use ConnectionFactory instead
|
HRegionLocator |
An implementation of
RegionLocator . |
HTable |
An implementation of
Table . |
HTableFactory | Deprecated
as of 0.98.1.
|
HTableMultiplexer |
HTableMultiplexer provides a thread-safe non blocking PUT API across all the tables.
|
HTableMultiplexer.AtomicAverageCounter |
Helper to count the average over an interval until reset.
|
HTableMultiplexer.FlushWorker | |
HTableMultiplexer.HTableMultiplexerStatus |
HTableMultiplexerStatus keeps track of the current status of the HTableMultiplexer.
|
HTableMultiplexer.PutStatus | |
HTablePool | Deprecated
as of 0.98.1.
|
HTableUtil | Deprecated
since 1.0
|
HTableWrapper |
A wrapper for HTable.
|
Increment |
Used to perform Increment operations on a single row.
|
MasterCallable<V> |
A RetryingCallable for master operations.
|
MetaCache |
A cache implementation for region locations from meta.
|
MetaScanner |
Scanner class that contains the
hbase:meta table scanning logic. |
MetaScanner.DefaultMetaScannerVisitor |
A MetaScannerVisitor that skips offline regions and split parents
|
MetaScanner.MetaScannerVisitorBase | |
MetaScanner.TableMetaScannerVisitor |
A MetaScannerVisitor for a table.
|
MetricsConnection |
This class is for maintaining the various connection statistics and publishing them through
the metrics interfaces.
|
MetricsConnection.CallStats |
A container class for collecting details about the RPC call as it percolates.
|
MetricsConnection.CallTracker | |
MetricsConnection.RegionStats | |
MetricsConnection.RunnerStats | |
MultiAction<R> |
Container for Actions (i.e.
|
MultiResponse |
A container for Result objects, grouped by regionName.
|
MultiServerCallable<R> |
Callable that handles the
multi method call going against a single
regionserver; i.e. |
Mutation | |
NoOpRetryableCallerInterceptor |
Class that acts as a NoOpInterceptor.
|
NoOpRetryingInterceptorContext | |
Operation |
Superclass for any type that maps to a potentially application-level query.
|
OperationWithAttributes | |
PerClientRandomNonceGenerator |
NonceGenerator implementation that uses client ID hash + random int as nonce group,
and random numbers as nonces.
|
PreemptiveFastFailInterceptor |
The concrete
RetryingCallerInterceptor class that implements the preemptive fast fail
feature. |
Put |
Used to perform Put operations for a single row.
|
Query | |
RegionAdminServiceCallable<T> |
Similar to
RegionServerCallable but for the AdminService interface. |
RegionCoprocessorServiceExec |
Represents a coprocessor service method execution against a single region.
|
RegionReplicaUtil |
Utility methods which contain the logic for regions and replicas.
|
RegionServerCallable<T> |
Implementations call a RegionServer and implement
RetryingCallable.call(int) . |
RegistryFactory |
Get instance of configured Registry.
|
Result | |
ResultBoundedCompletionService<V> |
A completion service for the RpcRetryingCallerFactory.
|
ResultStatsUtil |
A
Result with some statistics about the server/region status |
RetriesExhaustedException.ThrowableWithExtraContext |
Datastructure that allows adding more info around Throwable incident.
|
RetryingCallerInterceptor |
This class is designed to fit into the RetryingCaller class which forms the
central piece of intelligence for the client side retries for most calls.
|
RetryingCallerInterceptorContext |
The context object used in the
RpcRetryingCaller to enable
RetryingCallerInterceptor to intercept calls. |
RetryingCallerInterceptorFactory |
Factory implementation to provide the
HConnectionImplementation with
the implementation of the RetryingCallerInterceptor that we would use
to intercept the RpcRetryingCaller during the course of their calls. |
ReversedClientScanner |
A reversed client scanner which support backward scanning
|
ReversedScannerCallable |
A reversed ScannerCallable which supports backward scanning.
|
RowMutations |
Performs multiple mutations atomically on a single row.
|
RpcRetryingCaller<T> |
Runs an rpc'ing
RetryingCallable . |
RpcRetryingCallerFactory |
Factory to create an
RpcRetryingCaller |
RpcRetryingCallerWithReadReplicas |
Caller that goes to replica if the primary region does no answer within a configurable
timeout.
|
Scan |
Used to perform Scan operations.
|
ScannerCallable |
Scanner operations such as create, next, etc.
|
ScannerCallableWithReplicas |
This class has the logic for handling scanners for regions with and without replicas.
|
ServerStatisticTracker |
Tracks the statistics for multiple regions
|
StatsTrackingRpcRetryingCaller<T> |
An
RpcRetryingCaller that will update the per-region stats for the call on return,
if stats are available |
TableSnapshotScanner |
A Scanner which performs a scan over snapshot files.
|
UnmodifyableHRegionInfo | |
UnmodifyableHTableDescriptor |
Read-only table descriptor.
|
VersionInfoUtil |
Class to help with parsing the version info.
|
ZooKeeperKeepAliveConnection |
We inherit the current ZooKeeperWatcher implementation to change the semantic
of the close: the new close won't immediately close the connection but
will have a keep alive.
|
ZooKeeperRegistry |
A cluster registry that stores to zookeeper.
|
Enum | Description |
---|---|
AsyncProcess.Retry |
For manageError.
|
Consistency |
Consistency defines the expected consistency level for an operation.
|
Durability |
Enum describing the durability guarantees for tables and
Mutation s
Note that the items must be sorted in order of increasing durability |
IsolationLevel |
Specify Isolation levels in Scan operations.
|
Exception | Description |
---|---|
DoNotRetryRegionException |
Similar to RegionException, but disables retries.
|
NeedUnmanagedConnectionException |
Used for internal signalling that a Connection implementation needs to be
user-managed to be used for particular request types.
|
NoServerForRegionException |
Thrown when no region server can be found for a region
|
RegionOfflineException |
Thrown when a table can not be located
|
RetriesExhaustedException |
Exception thrown by HTable methods when an attempt to do something (like
commit changes) fails after a bunch of retries.
|
RetriesExhaustedWithDetailsException |
This subclass of
RetriesExhaustedException
is thrown when we have more information about which rows were causing which
exceptions on what servers. |
RowTooBigException |
Gets or Scans throw this exception if running without in-row scan flag
set and row size appears to exceed max configured size (configurable via
hbase.table.max.rowsize).
|
ScannerTimeoutException |
Thrown when a scanner has timed out.
|
WrongRowIOException |
To administer HBase, create and drop tables, list and alter tables,
use Admin
. Once created, table access is via an instance
of Table
. You add content to a table a row at a time. To
insert, create an instance of a Put
object. Specify value,
target column and optionally a timestamp. Commit your update using
Table.put(Put)
.
To fetch your inserted value, use Get
. The Get can be
specified to be broad -- get all on a particular row -- or narrow; i.e. return only a single cell
value. After creating an instance of
Get, invoke Table.get(Get)
.
Use Scan
to set up a scanner -- a Cursor- like access.
After creating and configuring your Scan instance, call
Table.getScanner(Scan)
and then
invoke next on the returned object. Both Table.get(Get)
and Table.getScanner(Scan)
return a
Result
.
Use Delete
to remove content.
You can remove individual cells or entire families, etc. Pass it to
Table.delete(Delete)
to execute.
Puts, Gets and Deletes take out a lock on the target row for the duration of their operation. Concurrent modifications to a single row are serialized. Gets and scans run concurrently without interference of the row locks and are guaranteed to not to return half written rows.
Client code accessing a cluster finds the cluster by querying ZooKeeper.
This means that the ZooKeeper quorum to use must be on the client CLASSPATH.
Usually this means make sure the client can find your hbase-site.xml
.
Once you have a running HBase, you probably want a way to hook your application up to it. If your application is in Java, then you should use the Java API. Here's an example of what a simple client might look like. This example assumes that you've created a table called "myTable" with a column family called "myColumnFamily".
import java.io.IOException; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; // Class that has nothing but a main. // Does a Put, Get and a Scan against an hbase table. public class MyLittleHBaseClient { public static void main(String[] args) throws IOException { // You need a configuration object to tell the client where to connect. // When you create a HBaseConfiguration, it reads in whatever you've set // into your hbase-site.xml and in hbase-default.xml, as long as these can // be found on the CLASSPATH Configuration config = HBaseConfiguration.create(); // Next you need a Connection to the cluster. Create one. When done with it, // close it (Should start a try/finally after this creation so it gets closed // for sure but leaving this out for readibility's sake). Connection connection = ConnectionFactory.createConnection(config); try { // This instantiates a Table object that connects you to // the "myLittleHBaseTable" table (TableName.valueOf turns String into TableName instance). // When done with it, close it (Should start a try/finally after this creation so it gets // closed for sure but leaving this out for readibility's sake). Table table = connection.getTable(TableName.valueOf("myLittleHBaseTable")); try { // To add to a row, use Put. A Put constructor takes the name of the row // you want to insert into as a byte array. In HBase, the Bytes class has // utility for converting all kinds of java types to byte arrays. In the // below, we are converting the String "myLittleRow" into a byte array to // use as a row key for our update. Once you have a Put instance, you can // adorn it by setting the names of columns you want to update on the row, // the timestamp to use in your update, etc.If no timestamp, the server // applies current time to the edits. Put p = new Put(Bytes.toBytes("myLittleRow")); // To set the value you'd like to update in the row 'myLittleRow', specify // the column family, column qualifier, and value of the table cell you'd // like to update. The column family must already exist in your table // schema. The qualifier can be anything. All must be specified as byte // arrays as hbase is all about byte arrays. Lets pretend the table // 'myLittleHBaseTable' was created with a family 'myLittleFamily'. p.add(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"), Bytes.toBytes("Some Value")); // Once you've adorned your Put instance with all the updates you want to // make, to commit it do the following (The HTable#put method takes the // Put instance you've been building and pushes the changes you made into // hbase) table.put(p); // Now, to retrieve the data we just wrote. The values that come back are // Result instances. Generally, a Result is an object that will package up // the hbase return into the form you find most palatable. Get g = new Get(Bytes.toBytes("myLittleRow")); Result r = table.get(g); byte [] value = r.getValue(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier")); // If we convert the value bytes, we should get back 'Some Value', the // value we inserted at this location. String valueStr = Bytes.toString(value); System.out.println("GET: " + valueStr); // Sometimes, you won't know the row you're looking for. In this case, you // use a Scanner. This will give you cursor-like interface to the contents // of the table. To set up a Scanner, do like you did above making a Put // and a Get, create a Scan. Adorn it with column names, etc. Scan s = new Scan(); s.addColumn(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier")); ResultScanner scanner = table.getScanner(s); try { // Scanners return Result instances. // Now, for the actual iteration. One way is to use a while loop like so: for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { // print out the row we found and the columns we were looking for System.out.println("Found row: " + rr); } // The other approach is to use a foreach loop. Scanners are iterable! // for (Result rr : scanner) { // System.out.println("Found row: " + rr); // } } finally { // Make sure you close your scanners when you are done! // Thats why we have it inside a try/finally clause scanner.close(); } // Close your table and cluster connection. } finally { if (table != null) table.close(); } } finally { connection.close(); } } }
There are many other methods for putting data into and getting data out of HBase, but these examples should get you started. See the Table javadoc for more methods. Additionally, there are methods for managing tables in the Admin class.
If your client is NOT Java, then you should consider the Thrift or REST libraries.
See also the section in the HBase Reference Guide where it discusses HBase Client. It has section on how to access HBase from inside your multithreaded environment how to control resources consumed client-side, etc.
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.