返回 导航

大数据

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"
注意:最后一个配置不能省略,否则 HBasejar 包和 Hadoopjar 包会有冲突,导致服务无法正常启动,日志报“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)接着依次进入各节点的 ZooKeeperbin 目录后执行如下命令启动 ZooKeeper 服务。
./zkServer.sh start

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

6,验证集群

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

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


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

7,停止 HBase 集群

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

全部评论(0)

回到顶部