淘先锋技术网

首页 1 2 3 4 5 6 7

这篇教程已经配置好了基于 Zookeeper 的 Hadoop HA,https://blog.csdn.net/weixin_43311978/article/details/106099052,在此基础上,我们继续配置 Hbase 的高可用(HA)
我的主机规划

主机名ip进程
Master192.168.150.141HMaster(主),HRegionServer
Worker1192.168.150.142HMaster(备),HRegionServer
Worker2192.168.150.143HRegionServer

我的版本信息

软件版本
hadoop3.2.1
zookeeper3.6.1
hbase2.2.4

hbase,jdk,hadoop版本对应表
http://hbase.apache.org/book.html#java

一、安装Hbase

1、下载HBase
根据上面的版本对应表下载兼容的 Hbase 版本
Apache HBase 官网:
https://hbase.apache.org/downloads.html
以我的为例,进入官网
在这里插入图片描述
点击 bin
在这里插入图片描述
右键复制链接地址
然后在虚拟机中使用 wget 命令下载

cd software
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.2.4/hbase-2.2.4-bin.tar.gz

2、解压到 /usr/local 目录下

sudo tar -zxvf hbase-2.2.4-bin.tar.gz -C /usr/local 

重命名为 hbase

cd /usr/local
sudo mv hbase-2.2.4 hbase

更改权限(我使用的用户名叫 hadoop)

sudo chown hadoop:hadoop hbase

3、配置环境变量

vim ~/.bashrc

添加

export HBASE_HOME=/usr/local/hbase

在 PATH 后面添加

$HBASE_HOME/bin

注意冒号隔开
如下图是我的配置
在这里插入图片描述
使环境变量生效

source ~/.bashrc

二、配置Hbase

1、配置 hbase-site.xml

cd /usr/local/hbase/conf
vim hbase-site.xml 

我的配置如下

<configuration>

        <!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://myNameService1/hbase</value>
        </property>

        <!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>

        <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>Master:2181,Worker1:2181,Worker2:2181</value>
        </property>

        <!--  指定缓存文件存储的路径 -->
        <property>
                <name>hbase.tmp.dir</name>
                <value>/tmp/hbase-${user.name}</value>
        </property>

        <!--  指定Zookeeper数据存储的路径  -->
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/usr/local/hbase/zookeeperData</value>
		</property>

		<!--  完全分布式式必须为false  -->
        <property>
                <name>hbase.unsafe.stream.capability.enforce</name>
                <value>false</value>
        </property>

</configuration>

创建上面指定的 zookeeper 数据的存储路径(这个路径你可以自己设置,但要存在)

 mkdir /usr/local/hbase/zookeeperData/

注意:hbase-site.xml 的 hbase.rootdir 的 value 值(包括主机和端口号)与 core-site.xml 的 fs.default.name 的 value 值(包括主机和端口号)一致
在这里插入图片描述
2、配置 hbase-env.sh

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

有几个地方需要改,hbase-env.sh 中本来就存在这些变量的配置,我们只需要删除前面的#并修改配置内容即可
大概在第28行,jdk 换成你自己的路径

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

在这里插入图片描述
大概在第31行,Hbase 底层存储依靠 HDFS,因此需要 hadoop 配置参数,hadoop 路径换成你自己的

export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop

在这里插入图片描述
大概在第126行,Hbase 如果使用自带的 zookeeper 则设置为 true,如果依赖外部 zookeeper,则设置为 false,我这里使用外置 zookeeper 因此设置为 false

export HBASE_MANAGES_ZK=false

在这里插入图片描述
3、配置 regionservers

cd /usr/local/hbase/conf
vim regionservers 

里面原本应该是 localhost,改成你想要作为 HRegionServer 的机器名或 ip, 比如我的将内容改为
在这里插入图片描述

三、配置Hbase高可用

为了保证 HBase 集群的高可靠性,HBase 支持多 Backup Master 设置,当Active Master 挂掉后,Backup Master 可以自动接管整个HBase的集群
该配置很简单,在 conf 目录下新增配置文件 backup-masters,在里面添加要作为 Backup Master 的节点 机器名或 ip

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

我这里用 Worker1 作为备用 master
在这里插入图片描述
将配置好的 hbase 目录传到到其他机器上

sudo scp -r /usr/local/hbase Worker1:/usr/local
sudo scp -r /usr/local/hbase Worker2:/usr/local

更改其他机器的 hbase 所属,在另外两台机器上执行

sudo chown -R hadoop:hadoop /usr/local/hbase/

并配置环境变量,方法跟前面一样

四、启动Hbase集群

先在三台机上启动 zookeeper 集群

zkServer.sh start

在 Master 上启动 hadoop 集群

start-dfs.sh 
start-yarn.sh 

Master 上启动 Hbase

start-hbase.sh

jps 命令查看进程
Master
在这里插入图片描述
Worker1
在这里插入图片描述
Worker2
在这里插入图片描述
浏览器访问 Master:16010,看以看到 Hbase 集群的信息
在这里插入图片描述
关闭集群的顺序
关闭 Hbase --> 停止 hadoop集群 --> 停止 zookeeper 集群

五、遇到的错误

启动 Hbase 后,发现本来应该作为主 HMaster 的节点没有启动,备用的 HMaster 反倒启动了,查阅资料发现在 hbase-site.xml 配置文件中添加以下配置然后重启 Hbase 即可解决

	<!--  完全分布式式必须为false  -->
	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>

六、总结

Hbase 对时间比较敏感,每个节点的时间不能相差太大,相差太大的话是没有办法正常启动的,相对于 hadoop安装与配置高可用,Hbase 高可用的配置相对来说简单很多,没有像配置 hadoop 时遇到那么多让人头疼的错误