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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言(贫穷使我见多识广)
前边经历了 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 )
<configur
### 构建和配置基于 DockerHBase 集群 #### 准备工作 为了成功部署HBase集群,需先确保操作系统满足最低内核版本需求。对于CentOS而言,应确认其内核不低于3.10版本[^3]。 ```bash uname -r ``` 接着安装Docker工具: ```bash yum -y install docker service docker start ``` 验证Docker安装无误后可尝试执行官方提供的`hello-world`镜像来检验环境设置是否正确。 ```bash docker run hello-world ``` #### 创建必要的网络结构 考虑到各组件间通信的需求,在启动任何服务之前定义一个自定义桥接网络是有益处的。这有助于简化容器间的连接管理并提高安全性。 ```bash docker network create hbase-net ``` #### 获取所需的基础镜像 根据项目具体要求选取合适的软件包版本。这里推荐采用Apache官方发布的稳定版作为基础构建材料之一[^2]。 - **ZooKeeper**: `zookeeper:latest` - **Hadoop**: `apache/hadoop:latest` - **HBase**: 可选用包含预集成依赖关系的复合型映像文件,比如由社区维护者分享于公共仓库中的实例[^4] #### 编写Compose文件描述整个架构布局 编写一份YAML格式的服务编排脚本用于自动化多节点分布式系统的初始化流程。下面给出了一种可能的设计方案片段供参考: ```yaml version: '3' services: zookeeper: image: zookeeper:latest networks: - hbase-net namenode: image: apache/hadoop:latest environment: CORE_CONF_fs_defaultFS: hdfs://namenode:8020 ports: - "50070:50070" networks: - hbase-net datanode: image: apache/hadoop:latest depends_on: - namenode environment: CORE_CONF_fs_defaultFS: hdfs://namenode:8020 networks: - hbase-net master: image: apachecn/hbase:2.5.10 environment: HBASE_MANAGES_ZK: false ZOOKEEPER_QUORUM: zookeeper HBASE_REGIONSERVERS: regionserver links: - zookeeper - namenode ports: - "16010:16010" networks: - hbase-net regionserver: image: apachecn/hbase:2.5.10 depends_on: - master environment: HBASE_MANAGES_ZK: false ZOOKEEPER_QUORUM: zookeeper links: - zookeeper - master networks: - hbase-net networks: hbase-net: external: true ``` 上述配置中指定了各个组成部分之间的关联方式以及对外暴露端口的信息以便后续访问控制和服务发现机制正常运作。 #### 执行命令启动集群 保存好`.env`与`docker-compose.yml`之后便可以调用如下指令一次性拉起全部必要设施: ```bash docker-compose up -d ``` 等待一段时间直至所有进程都进入健康状态即可认为初步搭建完毕。此时应该能够通过浏览器或者其他客户端程序接入到相应模块所提供的功能界面当中去进一步探索学习了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寒冰小澈IceClean

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

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

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

打赏作者

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

抵扣说明:

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

余额充值