大数据学习(141)-分布式数据库

在分布式数据库中主要有hdfs、hbase、clickhouse三种。

HDFS(Hadoop Distributed File System)、HBase 和 ClickHouse 都是处理大数据的分布式系统,但它们的设计目标、架构和适用场景有所不同。

一、HDFS(Hadoop Distributed File System)

HDFS 是 Hadoop 生态系统的一部分,是一个高度容错的系统,适合存储大量数据。它被设计为在廉价硬件上运行,通过复制数据来提供容错能力。HDFS 主要用于批量处理,而不是实时查询或交互式分析。它适合于大规模数据集的存储,并且是 Hadoop 生态系统中其他组件(如 MapReduce、Hive 等)的基础。

二、HBase

HBase 是一个分布式、面向列的 NoSQL 数据库,它建立在 HDFS 之上,适合处理大规模的数据集,尤其擅长快速随机访问。HBase 的数据模型是一种面向列的分布式数据库模型,数据被组织为行、列族、列和单元格的层次结构,并存储在表中。HBase 支持实时更新和插入,但可能不是最佳的选择对于批量的数据加载或复杂的数据转换操作。它适用于写密集型应用、海量数据源、实时数据分析和处理以及时序数据存储和分析。HBase 通常用于需要快速随机访问的场景,如社交软件的历史消息、日志数据等。

三、ClickHouse

ClickHouse 是一个高性能的列式数据库管理系统,专为快速分析大量数据而设计。它通过使用列存储、并行计算和其他性能优化技术,提供高效的查询速度,是大数据分析领域的佼佼者。ClickHouse 特别适用于大数据量的实时分析查询场景,如实时数据分析、日志分析、时序数据分析等。ClickHouse 支持多种数据模型,包括 Hive 兼容的 HiveQL 和 ClickHouse 自有的 SQL 查询语言。它提供了高性能的分布式查询引擎,可以执行复杂的聚合和分析操作,但它不支持事务处理和无服务器模式。

总结来说,HDFS 是一个分布式文件系统,主要用于数据存储;HBase 是一个面向列的 NoSQL 数据库,适合需要快速随机访问的大规模数据集;而 ClickHouse 是一个高性能的列式数据库,特别适合 OLAP 工作负载和高可用性的环境。选择哪一种取决于具体的应用需求。

HBase(Hadoop Database)是一个开源的、分布式的、面向列的 NoSQL 数据库,基于 Google 的 BigTable 论文设计,运行在 Hadoop HDFS 之上,提供高可靠性、高性能、可扩展的存储能力。它适用于海量结构化数据的存储和实时随机读写访问。

1. HBase 概述

1.1 HBase 的特点

  • 列式存储:数据按列族(Column Family)存储,适合稀疏数据。

  • 强一致性:保证数据的 ACID 特性(单行事务)。

  • 高扩展性:可线性扩展至数千台服务器,存储 PB 级数据。

  • 高可用性:支持自动故障恢复(RegionServer 宕机不影响服务)。

  • 实时读写:低延迟随机访问,适用于 OLTP(在线事务处理)。

  • 灵活的数据模型:无固定 Schema,支持动态列。

2. HBase 的架构

HBase 采用 Master-Slave 架构,主要组件包括:

2.1 HMaster

  • 负责表的 DDL 操作(创建、删除、修改表)。

  • 管理 RegionServer 的负载均衡。

  • 处理 Region 的分配和迁移。

  • 不直接处理客户端读写请求,因此不是单点故障。

2.2 RegionServer

  • 负责存储和管理数据(一个 RegionServer 可管理多个 Region)。

  • 处理客户端的读写请求。

  • 执行 MemStore 刷写(Flush)和 HFile 合并(Compaction)。

2.3 ZooKeeper

  • 管理集群状态(如 HMaster 选举)。

  • 存储 HBase 的元数据(如 hbase:meta 表的位置)。

  • 监控 RegionServer 存活状态。

2.4 HDFS

  • HBase 的数据最终存储在 HDFS 上,依赖其高可靠性和分布式存储能力。

3. HBase 数据模型

HBase 的数据模型类似于 BigTable,采用 "键值存储 + 列式存储" 的方式。

概念 说明
Table(表) 由多行组成,表名必须是字符串。
Row(行) 由 RowKey(行键)唯一标识,按字典序存储。
Column Family(列族) 列的集合,必须在表创建时定义。
Column Qualifier(列限定符) 列族下的具体列名,可动态添加。
Cell(单元格) 由 (RowKey, ColumnFamily:ColumnQualifier, Timestamp) 唯一确定,存储实际数据。
Timestamp(时间戳) 数据的版本号,默认由系统自动生成,也可自定义。

4. HBase 核心机制

4.1 存储结构

  • MemStore:内存缓冲区,写入数据先存到 MemStore,达到阈值后刷写到 HFile。

  • HFile:HBase 的底层存储文件,基于 HDFS 存储,采用 LSM-Tree(日志结构合并树)结构。

  • WAL(Write-Ahead-Log):防止数据丢失,先写日志再写 MemStore。

4.2 Region 分裂(Region Split)

  • 当 Region 大小超过阈值(默认 10GB)时,会自动分裂成两个子 Region。

  • 分裂策略可配置(如 ConstantSizeRegionSplitPolicy)。

4.3 Compaction(合并)

  • Minor Compaction:合并多个小 HFile 成一个较大的 HFile。

  • Major Compaction:合并所有 HFile 并清理过期数据(如被删除的 Cell)。

4.4 数据访问流程

  1. 客户端访问 ZooKeeper 获取 hbase:meta 表的位置。

  2. 查询 hbase:meta 找到目标 RowKey 所在的 RegionServer。

  3. 直接访问目标 RegionServer 读取数据。

你可能感兴趣的:(大数据,学习,分布式,clickhouse,hdfs,hbase)