本文详细介绍了HBase集群部署的完整过程,涵盖从前期准备、软件安装配置,到集群启动、检测以及数据读写操作等各个环节,帮助大家轻松掌握HBase集群的搭建方法。

一、HBase集群部署前的准备

HBase是构建在Hadoop之上的分布式数据库,它依赖于Hadoop的HDFS进行数据存储,借助YARN实现资源管理。在开始部署HBase集群之前,有个关键前提条件:必须先成功配置并启动Hadoop集群。这就好比盖房子,Hadoop集群是房子的地基,只有地基稳固了,才能在上面搭建HBase这栋“高楼”。

二、HBase的下载与安装

(一)版本选择与下载

HBase的官方网站是hbase.apache.org/,我们要去这里下载适合自己的版本。下载时可不能随便选,HBase和Hadoop之间存在版本对应关系。打个比方,Hadoop如果是3.x.x版本,那HBase就要选择与之匹配的版本,像hadoop3-bin这种专为Hadoop 3.x版本准备的二进制文件。比如我们选择下载hbase-2.6.1-hadoop3-bin.tar.gz这个压缩包。

(二)解压与安装

下载完成后,接下来就是解压和安装了。把下载好的压缩包解压到合适的目录,这里以解压到/usr/local/hbase为例。解压和转移的命令如下:

# 解压压缩包 tar -zxvf hbase-2.6.1-hadoop3-bin.tar.gz # 转移到 `/usr/local/hbase`下面 mv hbase-2.6.1-hadoop3 /usr/local/hbase 

这样,HBase的安装包就准备好啦。

三、HBase的配置

(一)配置hbase-env.sh

进入HBase的配置目录/usr/local/hbase/conf,找到hbase-env.sh文件,用文本编辑器(比如vi)打开它。在这个文件里,要把JAVA_HOME配置成你本地的Java环境路径。怎么查看本地的JAVA_HOME呢?在终端输入echo $JAVA_HOME就能看到了。假设你的Java环境路径是/usr/lib/jvm/java-1.8.0-openjdk,那就把这行代码添加到hbase-env.sh里:

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

(二)配置hbase-site.xml

接着要配置hbase-site.xml文件,同样用vi编辑器打开它:

vi /usr/local/hbase/conf/hbase-site.xml 

在这个文件里,我们要配置一系列关键信息:

  • hbase.cluster.distributed:因为我们要搭建分布式集群,所以这个属性要设置为true,不然HBase可启动不了。
  • hbase.master:指定HBase Master和RegionServer绑定的地址,比如写成hbase://vm-01:16000
  • hbase.zookeeper.quorum:这里要列出HBase使用的ZooKeeper集群的节点,比如vm-01,vm-02,vm-03
  • hbase.zookeeper.property.clientPort:设置默认的ZooKeeper客户端端口,一般是2181
  • hbase.rootdir:这是HBase的根目录,通常存储在HDFS中,比如hdfs://vm-01:9000/hbase 。这里一定要确保使用的hdfs://vm-01:9000和你Hadoop集群中HDFS的core-site.xml以及hdfs-site.xml里的配置一致。
  • zookeeper.znode.parent:设置ZooKeeper的根节点,一般设为/hbase
  • hbase.master.porthbase.regionserver.port:分别指定HBase Master和RegionServer的端口,这里设置为1600016020

配置好这些信息后,HBase的基本配置就完成了。

四、ZooKeeper的配置与启动

HBase需要借助ZooKeeper来协调集群中的各个节点,所以我们还得配置和启动ZooKeeper集群。

(一)ZooKeeper的下载与安装

先下载ZooKeeper,这里我们选择apache-zookeeper-3.8.4-bin.tar.gz这个版本。下载完成后,解压并转移到指定目录:

tar -xzvf apache-zookeeper-3.8.4-bin.tar.gz mv apache-zookeeper-3.8.4-bin /usr/local/zookeeper 

(二)ZooKeeper集群配置

ZooKeeper默认的配置模板是conf/zoo_sample.cfg,我们先把它复制一份,重命名为zoo.cfg

cd /usr/local/zookeeper/conf/ cp zoo_sample.cfg zoo.cfg 

然后编辑zoo.cfg文件,在里面配置一些关键参数:

# 基本配置 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/data clientPort=2181 maxClientCnxns=60 # 注意:以上大部分配置已存在,需要替换就行 # 集群服务器列表 server.1=vm-01:2888:3888 server.2=vm-02:2888:3888 server.3=vm-03:2888:3888 

这些参数都有啥用呢?简单解释一下:

  • tickTime:是ZooKeeper服务器与客户端之间或服务器之间心跳的基本时间单位,单位是毫秒。
  • initLimit:是Follower节点连接Leader节点的初始化时间,单位是tickTime的倍数。
  • syncLimit:是Leader和Follower之间同步的最大时间,也是tickTime的倍数。
  • dataDir:是ZooKeeper保存数据的目录,每台虚拟机都得单独创建。
  • clientPort:是客户端连接ZooKeeper集群的端口,默认是2181
  • server.X:这里的X是每个节点的唯一编号;2888是节点通信端口;3888是选举端口。

配置完zoo.cfg后,还得给每个节点设置一个myid文件,用来标识节点编号。在dataDir目录(比如/usr/local/zookeeper/data )下创建myid文件,内容就是zoo.cfg里配置的server.X的编号:
vm-01上:

mkdir -p /usr/local/zookeeper/data echo "1" > /usr/local/zookeeper/data/myid 

vm-02上:

mkdir -p /usr/local/zookeeper/data echo "2" > /usr/local/zookeeper/data/myid 

vm-03上:

mkdir -p /usr/local/zookeeper/data echo "3" > /usr/local/zookeeper/data/myid 

(三)ZooKeeper集群启动与验证

一切准备就绪,就可以启动ZooKeeper集群啦:

# 1. 启动ZooKeeper cd /usr/local/zookeeper/bin ./zkServer.sh start # 2. 查看ZooKeeper状态 ./zkServer.sh status # 3. 停止ZooKeeper ./zkServer.sh stop # 4. 重启ZooKeeper ./zkServer.sh restart 

启动之后,怎么验证集群是否正常工作呢?可以通过客户端连接ZooKeeper,然后执行一些简单命令:

# 1. 通过客户端连接ZooKeeper : ./zkCli.sh -server 192.168.10.68:2181 # 2. 执行一些简单命令验证: ls / create /test "HelloZooKeeper" get /test 

如果这些操作都没问题,说明ZooKeeper集群就正常运行啦。

五、HBase集群的启动

先在主节点vm-01上启动HBase:

cd /usr/local/hbase/bin ./start-hbase.sh 

然后在从节点vm-02vm-03上也执行同样的命令启动HBase:

./start-hbase.sh 

这里要注意,HBase在第一次启动时,会通过hbase init操作把集群的元数据存储在ZooKeeper中(包括/hbase/hbaseid节点)。可以通过usr/local/zookeeper/bin/zkCli.sh执行ls /hbase来查看。

六、HBase集群的检测

(一)进程检查

在所有节点上运行jps命令:

  • 如果是HBase Master节点,应该能看到HMaster进程。
  • 如果是RegionServer节点,应该能看到HRegionServer进程。

(二)日志检查

查看HBase的日志也能判断集群是否正常:

# master tail -f /usr/local/hbase/logs/hbase-root-master-vm-01.log tail -f /usr/local/hbase/logs/hbase-root-master-vm-01.out # regionServer tail -f /usr/local/hbase/logs/hbase-root-regionserver-vm-02.log tail -f /usr/local/hbase/logs/hbase-root-regionserver-vm-02.out 

(三)HBase Shell检查

通过HBase Shell也能检查集群状态:

# 启动HBase Shell : /usr/local/hbase/bin/hbase shell # 检查集群状态 hbase:001:0> status 1 active master, 2 backup masters, 3 servers, 0 dead, 0.6667 average load Took 1.3920 seconds 

如果这些检查都没问题,那就说明HBase集群启动成功啦。

七、HBase Web UI的访问

HBase提供了Web UI,方便我们在浏览器里查看集群状态:

  • HBase Master Web UI:访问http://<hbase-master-hostname>:16010(比如http://vm-01:16010),在这里可以查看集群的整体状态、各个RegionServer的信息以及其他集群指标。
  • HBase RegionServer Web UI:访问http://<regionserver-hostname>:16030(比如http://vm-02:16030),可以查看RegionServer的详细信息,像Region分布、内存使用情况等。

八、HBase的数据写入与读取

最后,我们来试试在HBase里写入和读取数据。先进入HBase Shell:

hbase shell 

然后创建一个表,并插入和查询数据:

# 创建一个表: 在HBase Shell中,创建一个表: create 'test_table', 'cf1' # 插入数据: 插入一些数据: put 'test_table', 'row1', 'cf1:name', 'John' # 查询数据: 查询数据: get 'test_table', 'row1' 

到这里,HBase集群就成功搭建起来了,并且可以正常进行数据操作啦!希望这篇文章能帮助大家顺利完成HBase集群的部署,要是在过程中有什么问题,欢迎一起交流讨论。