系列文章目录
- 第一章 【大数据环境安装指南】 JDK安装
- 第二章 【大数据环境安装指南】 Python安装
- 第三章 【大数据环境安装指南】VMware虚拟机静态IP及多IP配置
- 第四章 【大数据环境安装指南】zookeeper单机版环境搭建教程
- 第五章 【大数据环境安装指南】Hadoop单机版环境搭建教程
- 第六章 【大数据环境安装指南】HBase单机环境搭建教程
文章目录
- 系列文章目录
- 🔥 前言
- 一、环境前提与依赖检查
-
- 1.1 基础环境要求
-
- 1.1.1 网络配置
- 1.1.2配置主机名和 hosts 映射
- 1.1.3 创建普通用户和免密登录
- 1.2 核心依赖组件
- 二、集群节点规划
- 三、核心配置步骤
-
- 3.1 下载并解压HBase安装包
- 3.2 配置HBase环境变量
- 3.3 修改核心配置文件
-
- 3.3.1 配置hbase-env.sh(环境变量配置)
- 3.3.2 配置hbase-site.xml(核心核心配置)
- 3.3.3 配置regionservers(指定RegionServer节点)
- 3.3.4 配置backup-masters(指定备用Master,可选但推荐)
- 3.4 同步配置到所有节点
- 四、集群启动与状态验证
-
- 4.1 启动集群
- 4.2 状态验证(3种方式,确保集群正常)
-
- 4.2.1 查看进程(最直接)
- 4.2.2 通过HBase Shell验证
- 4.2.3 通过Web UI验证
- 五、常见问题排查方案
-
- 5.1 启动HBase后无HMaster进程
- 5.2 RegionServer无法启动
- 5.3 Web UI无法访问
- 5.4 HBase Shell执行命令报错:Connection refused
- 六、总结与后续操作建议
🔥 前言
-
集群搭建环境: 操作系统环境:Centos 7、Rocky 9 、Kylin V11 hadoop版本:3.4.2 JDK版本:8 Hbase版本:2.5.13 Zookeeper版本:3.8.4
-
HBase作为Hadoop生态下的分布式列存储数据库,具备高可靠性、高扩展性和海量数据存储能力,是大数据领域核心组件之一。本文将从环境依赖、节点规划、核心配置到集群启动验证,手把手教你搭建一套可用的HBase集群,适配Hadoop3.x版本,新手也能轻松上手!
一、环境前提与依赖检查
HBase集群运行依赖基础环境和核心组件支撑,搭建前务必完成以下准备工作,避免后续配置踩坑!
1.1 基础环境要求
1.1.1 网络配置
集群节点间网络互通,关闭防火墙/SELinux(生产环境可配置白名单,测试环境直接关闭更便捷)
# 临时关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0 # 临时
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久
1.1.2配置主机名和 hosts 映射
- 配置主机名(每个节点对应修改):
# node1节点
hostnamectl set-hostname node1
# node2节点
hostnamectl set-hostname node2
# node3节点
hostnamectl set-hostname node3
- 配置 hosts 文件(所有节点):
vim /etc/hosts
# 添加以下内容
192.168.3.129 node1
192.168.3.130 node2
192.168.3.131 node3
1.1.3 创建普通用户和免密登录
Hadoop 组件之间需要基于 SSH 进行通讯,实现主节点到所有从节点的SSH免密登录(集群间通信必备) (1)、创建hadoop用户 Hadoop 官方不建议用 root 运行集群(安全风险 + 权限混乱),核心思路是创建专属普通用户(如 hadoop),并赋予相关目录权限,全程以该用户操作。
useradd -m hadoop
passwd hadoop # 设置密码(如hadoop123)
# 在/usr/local目录下新建app目录作为应用安装目录
mkdir /usr/local/app
#app属主授权给hadoop用户
chown -R hadoop:hadoop /usr/local/app
(2)、赋予hadoop用户sudo权限(可选,方便后续操作)
echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
(3)、 在 Master 节点(node1)生成密钥对:
#切换到hadoop用户,生成密钥:
su – hadoop
ssh-keygen -t rsa # 一路回车,生成密钥
执行命令会提示相关操作,默认按回车就好

(4)、 授权 进入 ~/.ssh 目录下,查看生成的公匙和私匙
cd ~/.ssh

将公钥分发到所有节点(包括自身):
# 写入公匙到授权文件
cat id_rsa.pub >> authorized_keys
# 授权给node1(和localhost是同一台机器,可省略,但建议加)
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
chmod 600 authorized_keys
检查 SELinux / 防火墙:若开启 SELinux,需确保 SSH 目录上下文正确,执行如下命令:
restorecon -R ~/.ssh
验证免密登录是否生效,执行以下命令验证(无需输入密码即表示成功):
ssh node2
若直接进入node2主机的命令行,说明免密登录配置完成。 
1.2 核心依赖组件
HBase依赖HDFS存储数据、ZooKeeper实现分布式协调,需提前搭建并验证可用:
-
Hadoop集群:推荐3.x版本(如3.4.2),需确保HDFS和YARN正常启动
-
ZooKeeper集群:需确保集群正常启动,且节点间选举正常
提示:如果还未搭建Hadoop和ZooKeeper集群,可以参考我之前的文章:
- 【大数据环境安装指南】ZooKeeper搭建Hadoop高可用集群教程
- 【大数据环境安装指南】Zookeeper单机环境和集群环境搭建
二、集群节点规划
根据实际服务器资源规划节点角色,以下为3节点集群示例(可根据资源调整,最小集群建议3节点),所有节点均部署ZooKeeper(组成ZK集群):
| 192.168.3.129 | node1 | HMaster、RegionServer、ZooKeeper | 主Master节点,负责集群管理 |
| 192.168.3.130 | node2 | BackupMaster、RegionServer、ZooKeeper | 备用Master,主Master故障时接管,提升可用性 |
| 192.168.3.131 | node3 | RegionServer、ZooKeeper | 数据节点,负责数据存储和读写服务 |
⚠️ 注意:主机名与IP的映射需配置在所有节点的/etc/hosts文件中,示例配置:
192.168.3.129 node1
192.168.3.130 node2
192.168.3.131 node3
三、核心配置步骤
本步骤以主节点(node1)为操作中心,完成HBase安装包下载、配置后,同步到其他节点,全程附详细命令。
3.1 下载并解压HBase安装包
选择适配Hadoop3.x的HBase版本(本文以2.5.13为例,稳定且兼容),在node1执行以下命令:
wget https://dlcdn.apache.org/hbase/2.5.13/hbase-2.5.13-hadoop3-bin.tar.gz
tar -zxvf hbase-2.5.13-bin.tar.gz -C /usr/local/app/
ln -s /usr/local/app/hbase-2.5.13 /usr/local/app/hbase
3.2 配置HBase环境变量
在所有节点配置环境变量,确保全局可调用HBase命令:
vim /etc/profile
export HBASE_HOME=/usr/local/app/hbase
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
hbase version

3.3 修改核心配置文件
HBase核心配置文件位于$HBASE_HOME/conf目录,需修改4个关键文件:hbase-env.sh、hbase-site.xml、regionservers、backup-masters。
3.3.1 配置hbase-env.sh(环境变量配置)
该文件用于指定JDK路径、禁用内置ZK等核心环境参数:
vim $HBASE_HOME/conf/hbase-env.sh
添加/修改以下关键配置(注释掉原有冲突配置):
# 1. 指定JDK路径(替换为你的实际JDK安装路径)
export JAVA_HOME=/usr/local/jdk8
# 2. 禁用HBase内置的ZooKeeper(使用独立ZK集群,必配置)
export HBASE_MANAGES_ZK=false
# 3. 解决HBase与Hadoop版本兼容问题(Hadoop3.x必备)
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true
# 4. 配置HBase日志目录(可选,默认在$HBASE_HOME/logs)
export HBASE_LOG_DIR=$HBASE_HOME/logs

3.3.2 配置hbase-site.xml(核心核心配置)
该文件是HBase集群最核心的配置文件,指定HDFS存储路径、ZK集群地址等关键信息:
vim $HBASE_HOME/conf/hbase-site.xml
完整配置内容(替换对应节点信息):
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!– 1. 指定HBase数据在HDFS的存储路径(对应Hadoop的fs.defaultFS) –>
<property>
<name>hbase.rootdir</name>
<value>hdfs://node1:9000/hbase</value>
</property>
<!– 2. 启用分布式集群模式(true为分布式,false为单机) –>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!– 3. 指定ZooKeeper集群地址(逗号分隔所有ZK节点) –>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<!– 4. 指定ZooKeeper数据存储目录(与ZK集群配置的dataDir一致) –>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/app/zookeeper/data</value>
</property>
<!– 5. 指定HMaster绑定地址(主节点主机名+端口,默认16000) –>
<property>
<name>hbase.master.address</name>
<value>node1:16000</value>
</property>
<!– 6. HMaster Web UI端口(默认16010,可自定义) –>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!– 7. RegionServer Web UI端口(默认16030) –>
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
<!– 8. 关闭元数据预分区(新手友好,避免初始配置复杂) –><property>
<name>hbase.master.meta.thread.rescanfrequency</name>
<value>10000</value>
</property>
</configuration>

3.3.3 配置regionservers(指定RegionServer节点)
该文件用于指定集群中所有RegionServer节点的主机名,HBase启动时会自动在这些节点启动RegionServer进程:
vim $HBASE_HOME/conf/regionservers
删除原有内容,添加以下节点(每行一个):
node1
node2
node3

3.3.4 配置backup-masters(指定备用Master,可选但推荐)
为提升集群可用性,配置备用Master节点(node2),主Master故障时自动接管:
vim $HBASE_HOME/conf/backup-masters
node2
3.4 同步配置到所有节点
将node1上配置好的HBase目录同步到node2和node3,避免重复配置:
# 同步到node2
scp -r /usr/local/app/hbase node2:/usr/local/app/
# 同步到node3
scp -r /usr/local/app/hbase node3:/usr/local/app/
# 同步环境变量配置文件(若其他节点未手动配置)
scp /etc/profile node2:/etc/
scp /etc/profile node3:/etc/
# 在node2和node3分别执行,生效环境变量
source /etc/profile
四、集群启动与状态验证
⚠️ 启动顺序至关重要!必须严格遵循:ZooKeeper集群 → Hadoop集群 → HBase集群
4.1 启动集群
# 1. 启动ZooKeeper集群(所有ZK节点执行)
zkServer.sh start
# 2. 启动Hadoop集群(主节点node1执行)
start-dfs.sh
start-yarn.sh
# 3. 启动HBase集群(主节点node1执行)
start-hbase.sh
4.2 状态验证(3种方式,确保集群正常)
4.2.1 查看进程(最直接)
在各节点执行jps命令,查看对应进程是否存在:
-
node1(主Master):HMaster、RegionServer、QuorumPeerMain(ZK)、NameNode、ResourceManager

-
node2(备用Master):HMaster(备用)、RegionServer、QuorumPeerMain(ZK)、DataNode、NodeManager

-
node3:RegionServer、QuorumPeerMain(ZK)、DataNode、NodeManager

4.2.2 通过HBase Shell验证
在主节点执行hbase shell进入交互模式,执行以下命令测试:
#进入交互模式
hbase shell
# 查看集群状态(显示节点数、Region数等信息)
status
# 列出所有表(初始为空,无报错即正常)
list
# 创建测试表(可选,验证写入能力)
create 'test_table', 'info'
# 插入数据
put 'test_table', 'row1', 'info:name', 'zhangsan'
# 读取数据
get 'test_table', 'row1'
# 删除测试表(可选)
disable 'test_table'
drop 'test_table'

4.2.3 通过Web UI验证
打开浏览器,访问主Master的Web UI(默认端口16010):
http://node1:16010
在UI中可查看:集群拓扑、RegionServer状态、Master日志、表信息等,直观验证集群健康度。 
五、常见问题排查方案
搭建过程中难免遇到问题,以下是高频问题及解决方案:
5.1 启动HBase后无HMaster进程
-
原因1:hbase-site.xml中hbase.rootdir配置错误,或HDFS未启动
-
解决方案:检查HDFS是否正常(hdfs dfsadmin -report),修正hbase.rootdir路径,确保与Hadoop的fs.defaultFS一致
-
原因2:权限不足,HBase无法写入HDFS目录
-
解决方案:执行hdfs dfs -chmod 777 /hbase授权,或指定HBase运行用户为HDFS管理员
5.2 RegionServer无法启动
-
原因1:ZooKeeper集群未正常启动,或hbase.zookeeper.quorum配置错误
-
解决方案:在各ZK节点执行zkServer.sh status验证ZK状态,确保集群有Leader节点;修正hbase-site.xml中的ZK地址
-
原因2:节点间时间不同步
-
解决方案:所有节点启动ntp服务(systemctl start ntpd),执行ntpdate ntp.aliyun.com手动同步时间
5.3 Web UI无法访问
-
原因1:防火墙未关闭,端口16010被拦截
-
解决方案:关闭防火墙(systemctl stop firewalld),并禁用开机自启(systemctl disable firewalld)
-
原因2:hbase.master.info.port被占用
-
解决方案:修改hbase-site.xml中的该端口配置(如改为16011),重启HBase
5.4 HBase Shell执行命令报错:Connection refused
原因:HMaster或RegionServer未正常启动,或网络不通
解决方案:检查对应进程是否存在,验证节点间网络互通性(ping node1、telnet node1 16000)
六、总结与后续操作建议
至此,HBase集群已搭建完成!核心要点回顾:
- 依赖优先:先确保ZooKeeper和Hadoop集群正常运行,再配置HBase
- 核心配置:hbase-site.xml中的hbase.rootdir和hbase.zookeeper.quorum是必对参数
- 启动顺序:ZK → Hadoop → HBase,验证优先查进程、再用Shell、最后看UI
后续操作建议:
- 生产环境优化:调整RegionServer内存(hbase-env.sh中的HBASE_HEAPSIZE)、配置数据备份策略
- 学习进阶:尝试HBase表的分区设计、批量数据导入导出、性能调优
- 监控运维:集成Prometheus+Grafana实现集群监控,配置日志收集方案
如果本文对你有帮助,欢迎点赞+收藏+关注!如有问题,欢迎在评论区留言讨论~



