准备资源:hbase-2.0.5-bin.tar.gz
一、安装Zookeeper
二、安装HBase集群
1. 上传hbase-2.0.5-bin.tar.gz至/opt/software中,并将其解压至/opt/moudle中
# 来到软件包存放目录
cd /opt/software/
# 解压
tar -zxvf hbase-2.0.5-bin.tar.gz -C ../moudle/
2. 配置环境变量
# 使用文本编辑器打开自定义的环境变量脚本
sudo vim /etc/profile.d/my-env.sh
# 添加下列内容:
# HBASE环境变量
export HBASE_HOME=/opt/moudle/hbase-2.0.5
export PATH=$PATH:$HBASE_HOME/bin
# 保存退出
# 让环境变量生效
source /etc/profile
3. 修改HBase配置文件
# 来到HBase的配置文件目录下
cd $HBASE_HOME/conf
(1) 禁止HBase使用内置的Zookeeper
# 使用文本编辑器hbase-env.sh脚本配置文件
vim hbase-env.sh
# 配置hbase不使用内置的zookeeper
:%s/# export HBASE_MANAGES_ZK=true/export HBASE_MANAGES_ZK=false/g
# 保存退出
(2) 修改配置文件hbase-site.xml
# 使用文本编辑器打开hbase-site.xml文件
vim hbase-site.xml
# 于configuration标签下,添加如下内容:
<!-- 指定hbase中的数据存储在hdfs的位置,根据自己之前配置的hdfs端口号配置连接地址 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop101:8020/hbase</value>
<description>如果是hadoop HA,一定要把hadoop中的core-site.xml和hdf-site.xml复制到hbase的conf目录下,才能成功解析该集群名称,此时value值就是集群名称;如果是hadoop单namenode集群,配置写成hdfs://host:port/hbase</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--
指定要连接的zookeeper所在的服务器主机名,默认连接使用端口号为2181
如果要配置端口号,需要在另一个配置项中指定,此处主机名后跟端口号无法被识别
-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop101,hadoop102,hadoop103</value>
</property>
(3) 配置HBase集群机器地址
# 使用文本编辑器编辑
vim regionservers
# 删除文件内的原有内容,添加集群地址
hadoop101
hadoop102
hadoop103
# 保存退出
4. 配置高可用
# 新建backup-masters配置文件
vim ./backup-masters
# 在哪一台机器中启动hbase集群,master就是哪一台机器
# 可以在该配置文件中额外指定除了启动机器外的其他机器为备用master
# 此处设置hadoop102为备用master
# 添加内容如下:
hadoop102
# 保存退出
5. 如果发生slf4j-log4j.jar和hadoop冲突,移步到HBase的lib目录,删除该jar包
rm -rf $HBASE_HOME/lib/slf4j-log4j12-1.7.25.jar
6. 分发文件
(1) 分发环境变量
# 切换为root用户
su root
# 分发,并让其他机器上的环境变量生效
xrsync.sh /etc/profile.d/my-env.sh
# 退出
(2) 分发HBase
xrsync.sh $HBASE_HOME
7. 配置集群时间同步
8. 启停
(1) 启停命令
命令格式 | 解释 |
start-hbase.sh | 群起hbase集群,运行该命令的机器上会启动一个master |
stop-hbase.sh | 群停hbase集群 |
hbase-daemon.sh start|stop master|regionserver | 单点启停master或者regionserver |
(2) 封装启停脚本
# 于~/bin/下新建脚本文件:hbase.sh
vim ~/bin/hbase.sh
# 脚本内容如下:
#!/bin/bash
function hasHMaster(){
host=$1
if [[ $(ssh $host "jps | grep -i -E 'hmaster'" | wc -l) -eq 1 ]]
then
return 0
else
return 1
fi
}
if [[ $# -ne 1 ]]
then
echo "usage: hbase.sh start|stop"
exit
fi
case $1 in
start)
for host in $(awk 'BEGIN{print "localhost"} {print $0}' $HBASE_HOME/conf/backup-masters)
do
echo "$host: start hbase"
ssh $host "start-hbase.sh"
hasHMaster $host
if [[ $? -eq 0 ]]
then
break
fi
done
;;
stop)
for host in $(awk 'BEGIN{print "localhost"} {print $0}' $HBASE_HOME/conf/backup-masters)
do
hasHMaster $host
if [[ $? -eq 0 ]]
then
echo "$host: stop hbase"
ssh $host "stop-hbase.sh"
break
fi
done
;;
*)
echo "usage: hbase.sh start|stop"
exit
;;
esac
# 赋予可执行权限
chmod +x ~/bin/hbase.sh