返回 导航

大数据

hangge.com

HBase - 多节点集群搭建部署教程

作者:hangge | 2024-11-18 08:51
    我之前写过文章介绍如何在 CentOS 系统下进行单机版的 HBase 安装(点击查看)。而在生产环境,为了使系统具备高可用性和横向扩展性,以满足日益增长的数据处理需求,通常需要在多节点环境中搭建 HBase 集群。本文将演示如何在多节点上搭建 HBase 集群。

1,准备工作

(1)首先我们准备三台 linux 服务器进行集群搭建,具体信息如下:
主机名 内网 IP 外网 IP
node1 172.31.4.99 13.211.44.248
node2 172.31.3.72 3.106.170.197
node3 172.31.6.103 3.25.88.196

(2)为方便后续 HBase 集群的配置,我们在三台服务上均执行如下命令编辑的 host 文件,使得可以通过主机名相互访问:
echo '
172.31.4.99 node1
172.31.3.72 node2
172.31.6.103 node3' >> /etc/hosts

(3)不同与之前单机版 HBase 我们直接使用本地磁盘作为存储,HBase 集群需要建立在 Hadoop 文件系统(HDFS)之上。因此我们首先要搭建好 Hadoop 集群,具体步骤可以参考我之前写的文章:
提示:如果 HBase 集群和 Hadoop 集群使用相同的机器部署, 建议把 HBase 集群的从节点和 Hadoop 集群的从节点部署在相同的机器上,这样可以最大化利用数据本地化特性。

(4)由于 HBase 集群需要 Zookeeper 来协调和管理分布式环境下的各个节点,因此我们还需安装好 ZooKeeper,具体步骤可以参考我之前写的文章:

(5)最后,HBase 集群需要依赖 JDK,我们确保各个节点上都安装了 JDK,具体步骤可以参考我之前写的文章:

2,下载并解压 HBase 安装包

(1)我们访问 HBase 的官网(点击访问),或者国内的镜像地址(点击访问)获取需要的版本安装包,然后将其下载到 node1 服务器上:
wget https://dlcdn.apache.org/hbase/2.5.7/hbase-2.5.7-bin.tar.gz

(2)接着执行如下命令解压下载下来的压缩:
tar -zxvf hbase-2.5.7-bin.tar.gz

(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
mv hbase-2.5.7 /usr/local/hbase

3,修改 HBase 的配置文件

(1)进入 HBase 配置文件目录:
cd /usr/local/hbase/conf

(2)首先编辑 hbase-env.sh 文件:
vi hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-3.el9.x86_64
export HBASE_MANAGES_ZK=false
export HBASE_LOG_DIR=/data/hbase/logs
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
注意:最后一个配置不能省略,否则 HBase 的 jar 包和 Hadoop 的 jar 包会有冲突,导致服务无法正常启动,日志报“java.lang.IllegalArgumentException: object is not an instance of declaring class”错误

(3)接着编辑 hbase-site.xml 文件:
vi hbase-site.xml
<!--是否为分布式模式部署,true 表示分布式部署-->
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<!-- 本地文件系统 tmp 目录-->
<property>
  <name>hbase.tmp.dir</name>
  <value>/data/hbase/tmp</value>
</property>
<!-- 在分布式情况下一定设置为 false -->
<property>
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>false</value>
</property>
<!--设置 HBase 表数据,即 HBase 数据在 HDFS 上的存储根目录-->
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://node1:9000/hbase</value>
</property>
<!--Zookeeper 集群的 URL 配置,多个 host 之间用逗号隔开-->
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>node1,node2,node3</value>
</property>
<!--HBase 在 Zookeeper 上数据的根目录 znode 节点-->
<property>
  <name>zookeeper.znode.parent</name>
  <value>/hbase</value>
</property>
<!--设置 Zookeeper 通信端口,不配置也可以,Zookeeper 默认就采用 2181 端口-->
<property>
  <name>hbase.zookeeper.property.clientPort</name>
  <value>2181</value>
</property>

(4)最后,修改 regionservers 文件:
vi regionservers
node2
node3

4,其他节点的配置

(1)执行如下命令将 node1 上修改完配置的 HBase 安装包复制到 node2 上。
scp -rq /usr/local/hbase node2:/usr/local/

(2)接着执行如下命令将 node1 上修改完配置的 HBase 安装包复制到 node3 上。
scp -rq /usr/local/hbase node3:/usr/local/

5,启动集群

(1)首先,在 node1 上执行如下命令启动 Hadoop 集群。
start-all.sh

(2)接着依次进入各节点的 ZooKeeper 的 bin 目录后执行如下命令启动 ZooKeeper 服务。
./zkServer.sh start

(3)最后,在 node1 上执行如下命令启动 HBase 集群。
cd /usr/local/hbase
bin/start-hbase.sh

6,验证集群

(1)我们 node1 上执行 jps 命令,会发现多了 1 个 HMaster 进程,这个就是 HBase 集群主节点中的进程。

(2)在 node2 或者 node3 上执行 jps 命令,会发现都多了 1 个 HRegionServer 进程,这个就是 HBase 集群从节点中的进程。如果发现 HMaster 进程和 HRegionServer 进程都在,则说明 HBase 进程成功启动了。


(3)HBase 提供了 Web 界面,可以通过浏览器访问该 Web 界面确认集群是否正常启动,地址为 http://主节点 IP:16010

7,停止 HBase 集群

如果要停止 HBase 集群,则需要在 node1 上执行如下命令:
cd /usr/local/hbase
bin/stop-hbase.sh
评论

全部评论(0)

回到顶部