Distribute Cloud Environment on Ubuntu 14.04 with Docker

Set HBase Environment in a Docker container (Update 2015/03/27)

After setting Hadoop environment in previous section, you can set hbase environment now.

In the following example, I will use custom zookeeper to manage the resource of my cluster.

  • HBase version: 1.0.0
  • Zookeeper version: 3.3.6

Download HBase and Zookeeper

$ wget http://ftp.twaren.net/Unix/Web/apache/hbase/hbase-1.0.0/hbase-1.0.0-bin.tar.gz
$ wget http://ftp.twaren.net/Unix/Web/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
$ tar -zxvf hbase-1.0.0-bin.tar.gz
$ tar -zxvf zookeeper-3.3.6.tar.gz

Set the configuration of HBase

  • hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>hdfs://master:60000</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value><ZOOKEEPER_HOME>/data</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>
</configuration>
  • hbase-env.sh
$ vi <HBASE_HOME>/conf/hbase-env.sh
-> export HBASE_HOME=<HBASE_HOME>
-> export HADOOP_HOME=<HBASE_HOME>
-> export HBASE_CLASSPATH=$HADOOP_CONF_DIR
-> HBASE_MANAGES_ZK=false
  • regionservers
$ vi <HBASE_HOME>/conf/slaves
-> master2
-> slave1
-> slave2
-> slave3

Set the configuration of Zookeeper

As previous setting of hbase-env.sh, you can see I set HBASE_MANAGES_ZK=false to use my custom zookeeper to manage and monitor the resource of cluster.

  • zoo.cfg
$ vi <ZOOKEEPER_HOME>/conf/zoo.cfg
-> dataDir=<ZOOKEEPER_HOME>/data
-> clientPort=2181
-> server.1=master:2888:3888

And then add a myid file under <ZOOKEEPER_HOME>/data to tell zookeeper which node is the zookeeper running on.

for example, as my zoo.cfg set server.1=master:2888:3888, it means this zookeeper thread running on master node binding 2888 port and 3888 port. So I need to tell zookeeper which machine is that run on.

$ vi myid
-> 1
wq!

Set System Environment

$ sudo vi /etc/profile
-> export HBASE_HOME=<HBASE_HOME>
-> export ZOOKEEPER_HOME=<ZOOKEEPER_HOME>
-> export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

Brief Summary

After following previous sections to set Hadoop and HBase configurations, we can commit this Docker image to distribute cloud cluster.