一、安装 Hbase

1. 解压HBase到安装目录

  1. tar -zxvf hbase-2.0.5-bin.tar.gz -C /usr/local/src/
  2. mv /usr/local/src/hbase-2.0.5 /usr/local/src/hbase

2. 配置HBase环境变量

  1. vim /etc/profile
  1. # HBASE_HOME
  2. export HBASE_HOME=/usr/local/src/hbase
  3. export PATH=$PATH:$HBASE_HOME/bin

二、配置 Hbase

1. 配置 hbase-env.sh

vim /usr/local/src/hbase/conf/hbase-env.sh

之前单机的时候,zookeeper也是使用的hbase自带的,因此在hbase-env.sh文件中有这样一行:

export HBASE_MANAGES_ZK=true

在搭建ha模式的hdfs时已经搭建好了独立的zookeeper集群,所以hbase的ha自然也可以直接使用这个zookeeper集群,而不再使用自带的,因此这里需要修改成不使用自带的:

export HBASE_MANAGES_ZK=false
export JAVA_HOME=/usr/local/src/java

2. 配置 hbase-site.xml

vim /usr/local/src/hbase/conf/hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hacluster/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/usr/local/src/hbase/tmp</value>
    </property>
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>master:60000</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

3. 配置regionservers

vim /usr/local/src/hbase/conf/regionservers
master
slave1
slave2

4. 配置backup-masters

这个文件原本是没有的,是一个master备份节点的配置,可以不要。但是正常的ha模式一般来说是需要有备份master节点的,所以还是需要这个文件。由于原本没有,就需要手动在conf目录下创建并制定备份master节点,例如:

vim /usr/local/src/hbase/conf/backup-masters
slave1

5. core-site.xml和hdfs-site.xml 配置

原以为有了上边的配置就可以了,但是使用start-hbase.sh启动时,发现hbase-root-regionserver-node001.log日志出现如下的error信息:

Caused by: java.lang.IllegalArgumentException: java.net.UnknownHostException: mycluster
        at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:417)
        at org.apache.hadoop.hdfs.NameNodeProxiesClient.createProxyWithClientProtocol(NameNodeProxiesClient.java:132)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:351)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:285)
        at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:160)
        at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2812)

上边的hacluster并非主机名,而是hdfs的集群名称,看起来是这里不能识别。经过查询,解决方案是复制hadoop里边的core-site.xml和hdfs-site.xml到hbase的conf目录下,然后重新启动。

cp /usr/local/src/hadoop/etc/hadoop/core-site.xml /usr/local/src/hbase/conf/
cp /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml /usr/local/src/hbase/conf/

二、分发启动 Hbase

1. 分发 Hbase

xsync /usr/local/src/hbase

2. 启动 Hbase

start-hbase.sh