【HBase之轨迹】(1)使用 Docker 搭建 HBase 集群

本文详细介绍了如何使用Docker搭建HBase集群,包括前置准备、下载安装、配置、启动与关闭,以及高可用HBase的搭建。通过这个过程,可以理解HBase与Hadoop、Zookeeper的依赖关系,以及Docker集群中端口映射的重要性。


前言(贫穷使我见多识广)
前边经历了 Hadoop,Zookeeper,Kafka,他们的集群,全都是使用 Docker 搭建的
一开始的我认为,把容器看成是一台台独立的服务器就好啦

也确实是这样,但端口映射问题,让我一路以来磕碰了太多太多,直到现在的 HBase,更是将 Docker 集群所附带的挑战性,放大到了极致(目前是如此,往后,凭着我积累下来的理解,再难也是如此,不会,再继续艰难下去了)

虽然在真实开发环境中绝不会使用 Docker 搭建集群,我所习得的这些貌似只是白费功夫,但其实正因为这样,我更加明白了每一个技术背后的通讯是怎么样的,各个端口之间是怎么连接的,集群中的每一个个体,是如何工作的,等等如此

如果你的集群不是 Docker 搭建的,这篇博客依旧合适,只需要忽略那些额外的端口映射配置即可,但我相信,如果你将他们也掠过一遍,对这些技术的理解将会更加深刻

那接下来,就切入正题吧


0. 前置准备

HBase 依赖于 Hadoop 和 Zookeeper,所以需要先将这两个集群搭建起来

其中 HBase 利用了 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)
来提供分布式数据存储,表中的数据都存放在这里
同时还依赖了 Zookeeper,来管理数据库中的元数据,以及实现高可用


1. 下载安装

可以从官网里下载:https://www.apache.org/dyn/closer.lua/hbase/2.3.7/hbase-2.3.7-bin.tar.gz
也可以直接单击下载:https://dlcdn.apache.org/hbase/2.3.7/hbase-2.3.7-bin.tar.gz

上传到服务器解压,然后上传到集群中的任意一个容器(如果是虚拟机的话直接上传到对应虚拟机即可)

scp -r hbase-2.3.7 root@hadoop001:/xxx/<目标路径>

2. 配置(重)

接着在该容器中进行配置:
需要配置的文件有 hbase-env.shhbase-site.xmlregionservers

1)	首先编辑 hbase-env.sh
	下面的操作均在该文件中修改,一般都是注释掉的,将注释打开再修改成要的即可
	vim conf/hbase-env.sh

2)	查看 JAVA_HOME 路径
	echo $JAVA_HOME

3)	修改 JAVA_HOME 配置
	export JAVA_HOME=/usr/local/jdk1.8.0_291

4)	不使用 HBase 自带的 zookeeper(用我们自己的方便查看)
	export HBASE_MANAGES_ZK=false

修改完如下图:
在这里插入图片描述

1)	然后是 hbase-site.xml 文件
	vim conf/hbase-site.xml

2)	下边是我的配置供参考
首先在这里预先解释几个重要的配置(也是我后边才逐渐理解清楚的)

hbase.master.port
连接 Master 的端口,在新版本中默认为 16000,0.98之前为 60000

hbase.master.info.port
访问 Master 在 web 界面的端口,新版本默认为 16010,0.98之前为 60010

hbase.regionserver.port
连接 RegionServer 的端口,新版本默认为 16020,0.98 之前为 60020

hbase.regionserver.info.port
访问 RegionServer 在 web 界面的端口,新版本默认为 16030,0.98之前为 60030

(超小声)一开始我一直理解为 16010 是访问服务器 hadoop001 的端口,而 16020 是访问 hadoop002 的端口,等到后面设置端口映射的时候屡屡碰壁,才发现原理啊不是这么一回事
写给使用虚拟机或者有多台服务器的

如果你使用的集群是上边两个之一搭建的,而不是 Docker 搭建的,那么下边这些端口映射的问题通通不存在,可以很丝滑地使用默认配置(可以跳过下边蓝紫色框框)

在下边给出的示例配置文件中,只需要删除端口映射所需要的 4 个自定义配置(即上边提到的那 4 个),就可以正常使用啦
Docker 集群配置说明(Docker 搭建的集群,真的好麻烦啊啊啊,真想买多台服务器呢)

首先经过了对上边几个端口的了解,不难发现
每台服务器都有自己的 master 访问端口和 regionserver 访问端口

但由于我的集群是用 Docker 搭建的,就使得服务器主机中的 1 个 16010 端口无法映射到 3 个容器的 16010 端口,同样 1 个 16020 端口也无法映射到 3 个容器的 16020 端口,16030 同理

所以,就必须 分别用主机的 3 个端口去映射容器的 3 个端口
才能保证每个容器都能正常访问(是真的好麻烦啊啊啊,161xx 端口找了好久才找到这个不冲突的)

我将 3 个容器的 16010 端口分别设置成了 16110, 16111, 16112,然后分别用主机的这三个端口进行映射,即 16110 -> hadoop001:16110, 16111->hadoop002:16111, 16112->hadoop003:16112
同理 3 个容器的 16020 分别设置成了 16120, 16121, 16122,再使用主机端口映射,16030 也一样

最后,由于主机中的 16000 端口貌似已经有东西了,所以我将其改成了 16100,其他两个容器依次为 16101 16102

下面是我 hadoop001 的配置示例,其余两个容器的配置规则就如上边所说,为 hadoop001 的递增
(16101 16111 16121 16131 / 16102 16112 16122 16132 )
<configuration
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒冰小澈IceClean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值