一、安装 Hbase
1. 解压HBase到安装目录
tar -zxvf hbase-2.0.5-bin.tar.gz -C /usr/local/src/
mv /usr/local/src/hbase-2.0.5 /usr/local/src/hbase
2. 配置HBase环境变量
vim /etc/profile
# HBASE_HOME
export HBASE_HOME=/usr/local/src/hbase
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