HBase完全分布式部署详细教程(含HA高可用版+普通非HA版)

HBase完全分布式部署详细教程(含HA高可用版+普通非HA版)

前言

本文详细记录两种HBase完全分布式集群的搭建流程:一是基于Hadoop HA(高可用)集群的HBase高可用部署 (含备用HMaster),二是普通非HA版HBase完全分布式部署,涵盖安装包部署、配置文件修改、冲突问题解决、集群启停顺序等核心内容,步骤清晰可落地,适合大数据初学者参考实践。

环境准备

  • 集群节点:master(主节点)、slave1(从节点1)、slave2(从节点2)
  • 软件版本:JDK1.8.0_261、Hadoop3.1.4(HA/非HA模式)、HBase2.2.2、Zookeeper3.5.6
  • 前提条件:对应模式的Hadoop集群、Zookeeper集群已正常部署并可使用

一、HBase高可用版(基于Hadoop HA)部署流程

1. 安装包部署

(1)上传并解压HBase安装包

hbase-2.2.2-bin.tar.gz上传至master节点的/opt/software目录,执行解压命令:

bash 复制代码
# 解压至/opt/module目录
tar -zxvf /opt/software/hbase-2.2.2-bin.tar.gz -C /opt/module
(2)配置系统环境变量

编辑系统环境变量配置文件,添加HBase相关路径:

bash 复制代码
# 编辑环境变量文件
vim /etc/profile

在文件末尾添加以下配置:

bash 复制代码
# HBase环境变量
export HBASE_HOME=/opt/module/hbase-2.2.2
export PATH=$PATH:$HBASE_HOME/bin

使环境变量立即生效:

bash 复制代码
source /etc/profile
(3)验证HBase环境配置

执行版本查看命令,确认环境配置正常:

bash 复制代码
hbase version

若输出HBase版本信息(2.2.2),说明环境变量配置成功。

2. 核心配置文件修改

进入HBase配置目录,依次修改以下核心配置文件:

bash 复制代码
cd /opt/module/hbase-2.2.2/conf
(1)配置hbase-env.sh

编辑hbase-env.sh文件,指定JDK路径并关闭HBase自带Zookeeper:

bash 复制代码
vim hbase-env.sh

添加/修改以下配置:

bash 复制代码
# 指定JDK安装路径
export JAVA_HOME=/opt/module/jdk1.8.0_261
# 解决Hadoop与HBase类路径冲突问题
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
# 关闭HBase自带Zookeeper(完全分布式集群需使用独立Zookeeper集群)
export HBASE_MANAGES_ZK=false
(2)配置hbase-site.xml

编辑hbase-site.xml文件,添加集群分布式配置、存储路径、Zookeeper关联等核心配置:

bash 复制代码
vim hbase-site.xml

<configuration>标签内添加以下配置:

xml 复制代码
<property>
  <!-- 启用HBase分布式集群模式 -->
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <!-- HBase临时文件存储目录 -->
  <name>hbase.tmp.dir</name>
  <value>/opt/module/hbase-2.2.2/tmp</value>
</property>
<property>
  <!-- 关闭流能力强制检查,避免启动异常 -->
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>false</value>
</property>
<property>
  <!-- HBase数据存储根目录(关联Hadoop HA的NameNode地址) -->
  <name>hbase.rootdir</name>
  <value>hdfs://master:8020/hbase</value>
</property>
<property>
  <!-- Zookeeper集群节点配置(与ZooKeeper集群节点一致) -->
  <name>hbase.zookeeper.quorum</name>
  <value>master,slave1,slave2</value>
</property>
<property>
  <!-- Zookeeper数据存储目录(与zoo.cfg中配置一致) -->
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/opt/module/zookeeper-3.5.6/data</value>
</property>
<property>
  <!-- HMaster端口配置(0.98版本后新增,默认60000,此处改为16000) -->
  <name>hbase.master.port</name>
  <value>16000</value>
</property>
(3)配置regionservers

编辑regionservers文件,指定HBase RegionServer节点:

bash 复制代码
vim regionservers

添加以下节点名称(与Hadoop集群节点一致):

复制代码
master
slave1
slave2
(4)配置备用HMaster(实现HMaster高可用)

创建并编辑backup-masters文件,指定备用HMaster节点(此处选择slave1):

bash 复制代码
# 创建备用HMaster配置文件
vim backup-masters

添加备用节点:

复制代码
slave1

3. 远程分发配置文件与安装包

master节点的HBase安装包和相关配置文件分发至slave1slave2节点,确保集群各节点配置一致。

bash 复制代码
# 1. 分发环境变量配置文件
scp -r /etc/profile slave1:/etc
scp -r /etc/profile slave2:/etc

# 2. 分发HBase安装包
scp -r /opt/module/hbase-2.2.2 slave1:/opt/module
scp -r /opt/module/hbase-2.2.2 slave2:/opt/module

# 3. 分发备用HMaster配置文件
scp -r /opt/module/hbase-2.2.2/conf/backup-masters slave1:/opt/module/hbase-2.2.2/conf
scp -r /opt/module/hbase-2.2.2/conf/backup-masters slave2:/opt/module/hbase-2.2.2/conf

# 4. 各节点生效环境变量(slave1、slave2分别执行)
source /etc/profile

4. 集群启动与验证

(1)启动方式
bash 复制代码
# 方式1:单节点逐个启动
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver  # 所有节点分别执行

# 方式2:集群批量启动(推荐)
./start-hbase.sh
(2)状态验证
  • 进程查看:master节点有HMasterslave1节点有HMaster(备用)+HRegionServerslave2节点有HRegionServer
  • Web UI访问:http://master:16010/master-status
  • 命令行验证:hbase shell
  • Hadoop NameNode状态检查:hdfs haadmin -getServiceState nn1(需确保nn1为Active)

二、HBase普通完全分布式(非HA版)部署流程

1. 核心区别说明

与HA版相比,普通非HA版无需配置备用HMaster,且不依赖Hadoop HA集群,仅需普通Hadoop完全分布式环境即可部署,配置更简洁。

2. 安装包部署(与HA版一致)

(1)上传并解压HBase安装包
bash 复制代码
# 解压至/opt/module目录
tar -zxvf /opt/software/hbase-2.2.2-bin.tar.gz -C /opt/module
(2)配置系统环境变量
bash 复制代码
# 编辑环境变量文件
vim /etc/profile

添加以下配置:

bash 复制代码
# HBase环境变量
export HBASE_HOME=/opt/module/hbase-2.2.2
export PATH=$PATH:$HBASE_HOME/bin

使环境变量生效:

bash 复制代码
source /etc/profile
(3)验证环境配置
bash 复制代码
hbase version

3. 核心配置文件修改

进入HBase配置目录:

bash 复制代码
cd /opt/module/hbase-2.2.2/conf
(1)配置hbase-env.sh
bash 复制代码
vim hbase-env.sh

添加以下配置:

bash 复制代码
# 指定JDK安装路径
export JAVA_HOME=/opt/module/jdk1.8.0_261
# 解决Hadoop与HBase类路径冲突问题
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
# 关闭HBase自带Zookeeper
export HBASE_MANAGES_ZK=false
# 指定HBase类路径
export HBASE_CLASSPATH=/opt/module/hbase-2.2.2/conf
(2)配置hbase-site.xml
bash 复制代码
vim hbase-site.xml

<configuration>标签内添加以下配置:

xml 复制代码
<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/opt/module/hbase-2.2.2/tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slave1,slave2</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:8020/hbase</value>
  </property>
  <property>
    <!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
    <name>hbase.master.port</name>
    <value>16000</value>
  </property>
</configuration>
(3)配置regionservers
bash 复制代码
vim regionservers

添加节点名称:

复制代码
master
slave1
slave2

4. 远程分发文件

bash 复制代码
# 1. 分发HBase安装包
scp -r hbase-2.2.2/ slave1:/opt/module/
scp -r hbase-2.2.2/ slave2:/opt/module/

# 2. 分发环境变量配置文件
scp -r /etc/profile slave1:/etc/profile
scp -r /etc/profile slave2:/etc/profile

# 3. 各节点生效环境变量(slave1、slave2分别执行)
source /etc/profile

5. 集群启动与验证

(1)启动方式
bash 复制代码
# 方式1:单节点逐个启动
bin/hbase-daemon.sh start master  # 仅master节点执行
bin/hbase-daemon.sh start regionserver  # master、slave1、slave2分别执行

# 方式2:集群批量启动(推荐)
start-hbase.sh
(2)状态验证
  • 进程查看:master节点有HMaster+HRegionServerslave1slave2节点仅有HRegionServer
  • Web UI访问:http://master:16010/master-status
  • 命令行验证:hbase shell

三、通用问题解决:SLF4J多绑定冲突

1. 报错信息

复制代码
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.4/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hbase-2.2.2/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory ]

2. 解决步骤

所有集群节点(master、slave1、slave2)统一执行以下命令:

bash 复制代码
# 进入HBase第三方依赖目录
cd /opt/module/hbase-2.2.2/lib/client-facing-thirdparty/
# 重命名冲突JAR包,避免重复绑定
mv slf4j-log4j12-1.7.25.jar slf4j-log4j12-1.7.25.jar.copy

四、集群启停顺序(通用)

1. 启动顺序(必须严格遵循)

bash 复制代码
# 1. master节点启动HDFS集群
master: start-dfs.sh

# 2. (可选)master节点启动JobHistory服务
master: mr-jobhistory-daemon.sh start historyserver

# 3. master节点启动YARN集群
master: start-yarn.sh

# 4. 所有节点启动Zookeeper(master、slave1、slave2分别执行)
master/slave1/slave2: zkServer.sh start

# 5. master节点启动HBase集群
master: start-hbase.sh

2. 关闭顺序(与启动顺序相反)

bash 复制代码
# 1. master节点关闭HBase集群
master: stop-hbase.sh

# 2. 所有节点关闭Zookeeper(master、slave1、slave2分别执行)
master/slave1/slave2: zkServer.sh stop

# 3. (可选)master节点关闭JobHistory服务
master: mr-jobhistory-daemon.sh stop historyserver

# 4. master节点关闭YARN集群
master: stop-yarn.sh

# 5. master节点关闭HDFS集群
master: stop-dfs.sh

五、注意事项

  1. HBase集群启动依赖Hadoop NameNode为Active状态(HA版需确保主NN为Active,非HA版需确保NN正常运行)。
  2. 所有配置文件修改后,必须分发至所有集群节点,避免配置不一致导致启动失败。
  3. 若HMaster无法启动,优先检查hbase-site.xml路径配置、Zookeeper集群可用性、环境变量是否生效。
  4. HA版备用HMaster配置完成后,需重启HBase集群才能生效;非HA版无备用HMaster,若主HMaster故障需手动重启。
  5. SLF4J冲突问题需在所有节点执行重命名操作,仅单节点处理会导致集群启动异常。
相关推荐
FinTech老王2 小时前
制造业Oracle迁移替换:集中式vs分布式架构如何选择?
分布式·oracle·架构
writeone2 小时前
数据库课后题重点摘要
数据库·oracle
杨云龙UP2 小时前
Oracle释放磁盘空间:alert.log和listener.log清理实战记录_20251225
运维·服务器·数据库·sql·oracle
神算大模型APi--天枢6462 小时前
合规落地加速期,大模型后端开发与部署的实战指南
大数据·前端·人工智能·架构·硬件架构
BlockWay2 小时前
WEEX唯客:市场波动加剧背景下,用户为何更关注平台的稳定性与安全性
大数据·人工智能·安全
爱吃山竹的大肚肚2 小时前
优化SQL:如何使用 EXPLAIN
java·数据库·spring boot·sql·spring
QYZL_AIGC2 小时前
AI 赋能实体,全域众链创业的生态共赢新范式
大数据·人工智能
小于晏2 小时前
ThinkPHP中数据库索引优化指南:添加依据与实操要点
数据库·oracle
Teable任意门互动2 小时前
从飞书多维表格 简道云到Teable多维表格:企业为何选择Teable作为新一代智能数据协作平台?
数据库·excel·钉钉·飞书·开源软件