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

—— 目录 ——

  • 0. 前置准备
  • 1. 下载安装
  • 2. 配置(重)
  • 3. 启动与关闭
  • 4. 搭建高可用 HBase


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

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

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

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

那接下来,就切入正题吧


0. 前置准备

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

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

  • 还不熟悉 Docker 的,可以参考这里:
    【Docker之轨迹】Docker 入门使用(穿插踩坑经历)
  • Docker 搭建 Hadoop 集群,可参见:
    【Docker x Hadoop】使用 Docker 搭建 Hadoop 集群(从零开始保姆级)
  • Docker 搭建 Zookeeper 集群,可参见:
    【Zookeeper之轨迹】Zookeeper 入门使用(集群使用 Docker 模拟)

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,再使用主机端口映射,

你可能感兴趣的:(【大数据之轨迹】,【Docker之轨迹】,笔记,hbase,docker,hadoop)