Here is an example basic configuration for a distributed ten
node cluster. The nodes are named example0,
example1, etc., through node
example9 in this example. The HBase Master and the
HDFS namenode are running on the node example0.
RegionServers run on nodes
example1-example9. A 3-node
ZooKeeper ensemble runs on example1,
example2, and example3 on the
default ports. ZooKeeper data is persisted to the directory
/export/zookeeper. Below we show what the main
configuration files -- hbase-site.xml,
regionservers, and
hbase-env.sh -- found in the HBase
conf directory might look like.
<?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 RegionServers.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/export/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://example0:8020/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
</configuration>
In this file you list the nodes that will run RegionServers.
In our case, these nodes are example1-example9.
example1
example2
example3
example4
example5
example6
example7
example8
example9
Below we use a diff to show the differences
from default in the hbase-env.sh file. Here we
are setting the HBase heap to be 4G instead of the default
1G.
$ git diff hbase-env.sh
diff --git a/conf/hbase-env.sh b/conf/hbase-env.sh
index e70ebc6..96f8c27 100644
--- a/conf/hbase-env.sh
+++ b/conf/hbase-env.sh
@@ -31,7 +31,7 @@ export JAVA_HOME=/usr/lib//jvm/java-6-sun/
# export HBASE_CLASSPATH=
# The maximum amount of heap to use, in MB. Default is 1000.
-# export HBASE_HEAPSIZE=1000
+export HBASE_HEAPSIZE=4096
# Extra Java runtime options.
# Below are what we set by default. May only work with SUN JVM.
Use rsync to copy the content of the
conf directory to all nodes of the
cluster.