HBase 集群部署步骤详解
本文详细介绍了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.port
和hbase.regionserver.port
:分别指定HBase Master和RegionServer的端口,这里设置为16000
和16020
。
配置好这些信息后,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-02
和vm-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集群的部署,要是在过程中有什么问题,欢迎一起交流讨论。