Since the HBase Master may move around, clients bootstrap by looking to ZooKeeper for
current critical locations. ZooKeeper is where all these values are kept. Thus clients
require the location of the ZooKeeper ensemble information before they can do anything else.
Usually this the ensemble location is kept out in the
is picked up by the client from the
If you are configuring an IDE to run a HBase client, you should
conf/ directory on your classpath so
hbase-site.xml settings can be found (or
src/test/resources to pick up the hbase-site.xml
used by tests).
Minimally, a client of HBase needs the hbase, hadoop, log4j, commons-logging, commons-lang,
and ZooKeeper jars in its
CLASSPATH connecting to a cluster.
An example basic
hbase-site.xml for client only
might look as follows:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.zookeeper.quorum</name> <value>example1,example2,example3</value> <description>The directory shared by region servers. </description> </property> </configuration>
The configuration used by a java client is kept
in an HBaseConfiguration instance.
The factory method on HBaseConfiguration,
on invocation, will read in the content of the first
hbase-site.xml found on
CLASSPATH, if one is present
(Invocation will also factor in any
an hbase-default.xml ships inside the
It is also possible to specify configuration directly without having to read from a
hbase-site.xml. For example, to set the ZooKeeper
ensemble for the cluster programmatically do as follows:
Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally
If multiple ZooKeeper instances make up your ZooKeeper ensemble,
they may be specified in a comma-separated list (just as in the
Configuration instance can then be passed to an
and so on.