当前位置: 首页 > news >正文

大数据系统架构实践(三):Hbase集群部署

大数据系统架构实践(三):Hbase集群部署

文章目录

  • 大数据系统架构实践(三):Hbase集群部署
  • 一、Hbase简介
  • 二、部署前准备
  • 三、部署Hbase集群
    • 1. 下载并解压安装包
    • 2. 配置hbase-site.xml
    • 3. 配置hbase-env.sh
    • 4. 配置regionservers
    • 5. 复制Phoenix-jar包
    • 6. 同步Hbase目录
    • 7. 启动Hbase集群
    • 8. 界面展示
  • 总结


随着数据体量的爆炸式增长,传统关系型数据库在海量数据的存储与高并发访问场景下逐渐显得力不从心。为应对这一挑战,分布式数据库系统应运而生,其中 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地址角色
mastermaster192.168.100.1HMaster,HRegionServer
slave1slave1192.168.100.2HRegionServer
slave2slave2192.168.100.3HRegionServer

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 包目录(HDFS路径) --><property><name>hbase.dynamic.jars.dir</name><value>${hbase.rootdir}/lib</value></property><!-- Phoenix 相关配置 --><property><name>phoenix.functions.allowUserDefinedFunctions</name><value>true</value></property><property><name>phoenix.schema.isNamespaceMappingEnabled</name><value>true</value></property><property><name>phoenix.schema.mapSystemTablesToNamespace</name><value>true</value></property><property><name>phoenix.mutate.batchSize</name><value>200000</value></property><property><name>phoenix.mutate.maxSize</name><value>15000000</value></property><property><name>phoenix.mutate.maxSizeBytes</name><value>1048576000</value></property><property><name>phoenix.query.timeoutMs</name><value>600000</value></property><property><name>phoenix.query.keepAliveMs</name><value>600000</value></property><property><name>phoenix.coprocessor.maxServerCacheTimeToLiveMs</name><value>300000000</value></property><!-- 客户端/服务器参数 --><property>  <name>hbase.rpc.timeout</name><value>600000</value></property><property>  <name>hbase.client.operation.timeout</name><value>600000</value></property><property><name>hbase.client.scanner.timeout.period</name><value>600000</value></property><property><name>hbase.regionserver.lease.period</name><value>600000</value></property><property>  <name>hbase.client.ipc.pool.type</name>   <value>RoundRobinPool</value></property><property>  <name>hbase.client.ipc.pool.size</name>  <value>10</value></property><!-- 其他配置 --><property><name>fs.hdfs.impl</name><value>org.apache.hadoop.hdfs.DistributedFileSystem</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><property><name>hbase.coprocessor.abortonerror</name><value>false</value></property><property><name>hbase.regionserver.wal.codec</name><value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value></property><property><name>hbase.quota.enabled</name><value>true</value></property><property><name>hbase.quota.refresh.period</name><value>1000</value></property><property><name>hbase.master.loadbalance.bytable</name><value>true</value></property><property><name>hbase.coprocessor.user.region.classes</name><value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation</value></property>
</configuration>

3. 配置hbase-env.sh

用于设置 HBase 启动参数、Java 环境变量及内存等运行时配置

vim /usr/local/hbase/conf/hbase-env.shexport JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/usr/local/hadoop/
export HBASE_HOME=/usr/local/hbase
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_HEAPSIZE=4096M
export HBASE_MASTER_OPTS="-Xmx2g -Xms2g -Xmn256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
export HBASE_REGIONSERVER_OPTS="-Xmx4g -Xms4g -Xmn256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xloggc:/usr/local/hbase/logs/gc-hbase.log"

4. 配置regionservers

用于定义 HBase 中各 RegionServer 所在主机,支持集群中数据分片和并发处理

vim /usr/local/hbase/conf/regionserversmaster
slave1
slave2

5. 复制Phoenix-jar包

Phoenix 是构建在 HBase 之上的 SQL 层,运行时需要 RegionServer 能识别 Phoenix 的类。因此,我们需要将 Phoenix 的 JAR 包放入 HBase 的类路径中(即 lib/ 目录),确保在 RegionServer 启动时就加载这些类。否则,执行 SQL 查询时会报 ClassNotFoundException。

# 下载地址(Hbase版本为2.3.7)
https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.3-5.1.3-bin.tar.gz# 解压移动
tar xf phoenix-hbase-2.3-5.1.3-bin.tar.gz
mv phoenix-hbase-2.3-5.1.3-bin /usr/local/phoenix# 将Phoenix核心依赖JAR复制到HBase的lib目录
cp /usr/local/phoenix/phoenix-pherf-5.1.3.jar /usr/local/hbase/lib/
cp /usr/local/phoenix/phoenix-server-hbase-2.3-5.1.3.jar /usr/local/hbase/lib/

6. 同步Hbase目录

scp -rp /usr/local/hbase slave1:/usr/local/
scp -rp /usr/local/hbase slave2:/usr/local/

7. 启动Hbase集群

/usr/local/hbase/bin/start-hbase.sh# 验证
netstat -tnlp|grep -E "16010|16020|16030"

8. 界面展示

HMaster Web UI:http://192.168.100.1:16010
在这里插入图片描述


总结

🚀 本文详细介绍了 HBase 集群的架构特点及多节点部署流程,涵盖了关键配置文件说明及环境准备要点,确保集群具备高可用性与良好性能表现。通过配置 ZooKeeper、RegionServer 和 Phoenix 等组件,实现了 HBase 与 Hadoop 生态的无缝集成,满足了海量数据的实时读写需求。
📌 下一篇将聚焦大数据生态中不可或缺的实时消息系统 —— Kafka,讲解其分布式架构设计、集群部署以及如何实现高吞吐、低延迟的数据流处理,助力构建完善的大数据实时处理平台。

http://www.lqws.cn/news/581077.html

相关文章:

  • 机器学习06 集成学习
  • R1-Searcher使用强化学习增强语言模型解决问题的搜索能力
  • 手机屏暗点缺陷修复及相关液晶线路激光修复原理
  • 超大js文件多层级引用缓存在网络较差的时候无法调用使用问题
  • 设计模式-单例模式
  • FPGA矩阵算法实现
  • PHP安装使用教程
  • 如何在Linux服务器中配置Oracle数据库
  • 大数据(4)-spark
  • vue3 + luckysheet 实现在线编辑Excel
  • stm32 freertos下基于 hal库的模拟I2C驱动实现
  • Python 安装使用教程
  • 【知识】RPC和gRPC
  • 实现ModbusTCP转Profinet网关协议转换功能的网关设备
  • Install Ubuntu 24.04 System
  • reactor-test
  • 如何在 iOS 上线前做好安全防护?IPA 混淆与逆向防护实践详解
  • 什么是IOC(控制反转)?—— 用生活实例解读Spring核心概念
  • 【硬核数学】2.7 理论与现实的鸿沟:深度学习的数值稳定性挑战《从零构建机器学习、深度学习到LLM的数学认知》
  • 使用OpenSSL接口读取pem编码格式文件中的证书
  • Java外观模式实现方式与测试方法
  • 链表题解——设计链表【LeetCode】
  • 大模型-分布式推理简介
  • linux 操作docker的基本命令docker仓库
  • ubuntu下免sudo执行docker
  • 自动驾驶:特斯拉 Model Y全自动驾驶交付的技术原理
  • 笨方法学python -练习6
  • 设计模式精讲 Day 19:观察者模式(Observer Pattern)
  • 设计模式-观察者模式
  • Linux 系统管理:高效运维与性能优化