大数据系统架构实践(三):Hbase集群部署
文章目录
随着数据体量的爆炸式增长,传统关系型数据库在海量数据的存储与高并发访问场景下逐渐显得力不从心。为应对这一挑战,分布式数据库系统应运而生,其中 HBase 作为构建在 Hadoop 生态之上的高可靠、高可扩展的列式存储系统,被广泛应用于日志存储、用户行为追踪、时间序列数据管理等领域。
本系列将围绕大数据系统的核心组件及其部署实践进行系统介绍。本篇作为第三篇,将聚焦于 HBase 的架构原理、核心组件、集群部署方式以及关键配置说明,为后续深入理解 HBase 与 Hadoop 生态中如 Hive、Phoenix 等组件的协同使用奠定基础。
一、Hbase简介
HBase 是一个开源的、分布式的、面向列的 NoSQL 数据库,最初由 Apache Hadoop 项目中的子项目演变而来,设计灵感来源于 Google 的 Bigtable 论文。它构建在 Hadoop HDFS 之上,具备高可扩展性、高容错性,适用于实时读写海量非结构化和半结构化数据的场景。
HBase 的 核心特性 包括:
- 面向列存储:适合高稀疏度、高压缩比的数据模型,与关系型数据库按行存储的方式不同
- 高可扩展性:通过 RegionServer 的横向扩展支持 PB 级别数据存储和访问
- 支持实时读写:相比传统 Hadoop 的批处理能力,HBase 适合低延迟的在线读写访问
- 与 Hadoop 深度集成:依赖 HDFS 提供的分布式存储能力,支持与 MapReduce、Hive、Phoenix 等组件协同工作
- 强一致性保证:支持行级原子性操作,保障数据写入与读取的一致性
HBase 的 应用场景 包括但不限于:
- 日志数据存储与分析(如用户行为日志)
- 实时指标系统(如广告点击监控、IoT 数据采集)
- 大规模时间序列数据库
- 数据平台中的宽表存储方案
作为 Hadoop 生态的重要组成部分,HBase 提供了与传统关系型数据库完全不同的数据建模方式和存储访问机制,是构建现代大数据平台的重要基石之一。
二、部署前准备
HBase 采用典型的主从架构,核心由 Master 节点 和多个 RegionServer 节点 构成,同时依赖 HDFS 提供底层分布式存储能力。为了保证系统的高可用性与负载均衡,HBase 通常部署为多节点集群:
- 最基本的部署架构包括:一个 HMaster + 多个 HRegionServer
- 为提升可用性,可部署备用 HMaster(Standby Master)
- 后端存储依赖 HDFS,因此需提前部署好 Hadoop 集群(或直接与现有 Hadoop 集群对接)
在生产环境中,3 台服务器组成的小型 HBase 集群可作为基础部署,既满足功能验证和开发测试需求,又具备一定的扩展能力。
✅ 三台服务器的配置与角色
| 节点名称 | 主机名 | ip地址 | 角色 |
|---|---|---|---|
| master | master | 192.168.100.1 | HMaster,HRegionServer |
| slave1 | slave1 | 192.168.100.2 | HRegionServer |
| slave2 | slave2 | 192.168.100.3 | HRegionServer |
HBase 集群默认使用 ZooKeeper 管理集群元数据及选主,因此部署至少 3 个 ZooKeeper 实例以实现故障容错,RegionServer 是实际处理读写请求、管理数据分区(Region)的工作节点
✅ JDK 依赖环境
Hbase 基于 Java 开发,运行前请确保已安装 JDK 1.8 或以上版本
三、部署Hbase集群
以下步骤在 master 节点上执行,其他节点通过配置同步
1. 下载并解压安装包
# 下载地址(以2.3.7版本为例)
https://archive.apache.org/dist/hbase/
# 解压移动
tar xf hbase-2.3.7-bin.tar.gz
mv hbase-2.3.7 /usr/local/hbase
2. 配置hbase-site.xml
用于定义 HBase 的存储目录、集群模式、ZooKeeper 连接及 Phoenix 参数等关键配置
vim /usr/local/hbase/conf/hbase-site.xml
<configuration>
<!-- HBase 存储根目录(HDFS路径) -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9820/hbase</value>
</property>
<!-- 启用分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- ZooKeeper 集群主机名(需解析) -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<!--默认: 180000 :Zookeeper 会话超时时间,单位是毫秒 -->
<property>
<name>zookeeper.session.timeout</name>
<value>240000</value>
</property>
<!-- 动态加载的 Jar

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



