大数据的本质是用分布式系统处理超出单机能力的数据。下面这些概念是理解整个体系的基石。
🔷 数据仓库 Data Warehouse
面向分析决策的、集成的、稳定的、反映历史变化的数据集合。数据经过 ETL 清洗、建模后,以结构化形式存储,典型模型是星型/雪花模型。
结构化 ETL OLAP🔶 数据湖 Data Lake
存储海量原始数据的存储系统,支持任意格式(结构化、半结构化、非结构化)。数据先存进来,用的时候再定义 Schema(读时模式)。
原始数据 Schema-on-Read 低成本🔷 湖仓一体 Lakehouse
数据湖的灵活存储 + 数据仓库的管理能力(ACID 事务、Schema 管理、数据治理)的结合体。Delta Lake、Iceberg、Hudi 是典型实现。
ACID Delta/Iceberg🔶 ETL & ELT
ETL:Extract(抽取)→ Transform(转换)→ Load(加载),传统数仓模式。ELT:先 Load 原始数据进湖,再用 SQL 做 Transform,更灵活。
抽取 转换 加载🔷 ODS / DWD / DWS / ADS
数据仓库分层:ODS(原始数据层)、DWD(明细层)、DWS(汇总层)、ADS(应用层)。分层让数据复用、治理、追溯更清晰。
分层建模🔶 OLTP vs OLAP
OLTP(事务处理):面向业务写入,行存,范式为王。OLAP(分析处理):面向查询分析,列存,维度建模。两者目标完全不同。
行存 vs 列存三者不是替代关系,而是针对不同场景的互补方案。选哪个,看你的数据结构和分析需求。
| 对比维度 | 数据仓库 DW | 数据湖 Data Lake | 湖仓一体 Lakehouse |
|---|---|---|---|
| 数据格式 | 结构化(表格) | 任意格式(文本/图片/日志/视频) | 任意格式 + 表格式抽象 |
| Schema 策略 | 写时模式(Schema-on-Write) | 读时模式(Schema-on-Read) | 两者兼顾,支持 Schema Evolution |
| 数据存储成本 | 较高(需建模清洗) | 极低(对象存储,如 S3/OSS) | 低(基于对象存储 + 元数据层) |
| 数据质量 | 高(ETL 强约束) | 低(原始数据,质量参差不齐) | 高(ACID 事务 + 数据校验) |
| 典型查询引擎 | Hive / Presto / ClickHouse | Spark / Flink(直接读文件) | Spark / Trino + Delta/Iceberg |
| 适用场景 | BI 报表、财务分析、监管报表 | ML 训练、数据探索、日志分析 | 同时满足 BI + AI 的统一平台 |
| 典型技术 | Hive + ORC/Parquet | S3 + Spark + HDFS | Delta Lake / Iceberg / Hudi |
大数据架构经历了多次迭代,每次都是为了解决上一代的痛点。下面用图示展示核心架构。
用两套系统分别处理离线批处理和实时流处理,最终在 Serve 层合并结果。优点是稳定,缺点是维护两套逻辑("Lambda 双写问题")。
Storm / Flink
Druid / HBase
MapReduce / Spark
覆盖实时近似值
LinkedIn 提出的改进方案:只保留流处理,用消息队列(Kafka)保存完整历史数据,批处理也用流引擎重放实现。一套逻辑,统一处理。
支持重放(Replay)
实时 + 重放批处理
在对象存储之上加一个"表格式"元数据层(Delta/Iceberg/Hudi),让数据湖具备数据仓库的事务能力和高性能查询能力。
Parquet / ORC 文件
Schema Evolution
理解数据从产生到最终被消费的完整链路,是做数据平台的基本功。
数据以天为单位批处理,适合对实时性要求不高的 BI 报表、经营分析等场景。
数据产生后实时捕获、处理、输出,用于实时监控、实时推荐、风控等场景。
(Canal / Debezium)
(Kafka / Pulsar)
(Flink / Spark Streaming)
(Redis / HBase / ClickHouse)
(大屏 / 告警 / API)
用同一套 API 和引擎处理离线和实时,Flink 是典型代表:"批是流的特例"(有界流 = 批处理)。
| 维度 | 传统离线(批处理) | 实时流处理 | 批流一体(Flink) |
|---|---|---|---|
| 数据边界 | 有界(已知大小) | 无界(无限数据流) | 统一用 DataStream / Table API |
| 延迟 | 小时 / 天级 | 毫秒 / 秒级 | 同一引擎,按需选择 |
| 容错机制 | Task 失败重跑 | Checkpoint + 状态后端 | 统一的 Checkpoint 机制 |
| 典型引擎 | MapReduce / Spark | Storm / Flink | Flink(推荐)/ Spark Structured Streaming |
大数据生态庞大,按功能分层理解。不需要全部掌握,但需要知道每个组件解决什么问题。
大数据的基石。HDFS 是 Hadoop 分布式文件系统,提供高吞吐的块存储;云上则使用 S3 / OSS 等对象存储,成本更低、弹性更好。数据以文件形式存储,通常配合列式格式(Parquet / ORC)提升查询效率。
管理集群 CPU / 内存资源,决定哪个任务跑在哪台机器上。YARN 是 Hadoop 生态的传统调度器;Kubernetes 正在成为新标准,支持更细粒度的资源隔离和弹性伸缩。
MapReduce:Google 提出的经典模型,将计算分为 Map 和 Reduce 两个阶段,适合大规模批处理,但磁盘 IO 多、慢。
Spark:基于内存的批处理引擎,比 MapReduce 快 10~100 倍,支持 SQL、流处理、MLlib 机器学习。
Flink:真正的流处理引擎,支持事件时间、状态管理、Exactly-Once,批流一体是其核心设计目标。
实时数据管道的核心组件,负责解耦生产者和消费者、缓冲峰值流量。Kafka 是事实标准,以高吞吐、持久化、水平扩展著称;Pulsar 是新一代消息系统,支持计算存储分离;RocketMQ 在国内互联网广泛使用。
Hive:基于 MapReduce/Spark 的 SQL 引擎,适合离线批处理,延迟高。
Presto/Trino:内存化 MPP 查询引擎,支持跨数据源联合查询,适合 Ad-hoc 分析。
ClickHouse:列式 OLAP 数据库,单表查询极致性能,适合实时报表。
Doris / StarRocks:新一代 MPP 数据库,兼顾实时写入和高并发查询,国内主流选择。
湖仓一体的核心,位于文件格式(Parquet/ORC)之上、查询引擎之下,提供 ACID 事务、Time Travel、Schema Evolution 等能力。
Delta Lake:Databricks 开源,与 Spark 深度集成。
Iceberg:Netflix 开源,支持隐藏分区、时间旅行,与引擎无关,生态最好。
Hudi:Uber 开源,擅长增量更新和近实时数据摄入。
负责将数据从各个源头同步到数据平台。Sqoop 用于 Hadoop 与关系型数据库之间的批量同步;DataX 是阿里开源的异构数据同步工具;Flume 用于日志采集;CDC(Change Data Capture)用于实时捕获数据库变更(Binlog)。
把所有组件放到一张图里,理解它们之间的关系。
| 概念 | 一句话解释 | 关键词 |
|---|---|---|
| 数据仓库 | 面向分析的结构化数据集合,建模后存储 | ETL、维度建模、OLAP |
| 数据湖 | 存储任意格式原始数据的系统,读时定义 Schema | Schema-on-Read、低成本 |
| 湖仓一体 | 湖的存储 + 仓的管理能力,统一数据平台 | Delta、Iceberg、ACID |
| Lambda 架构 | 批处理 + 流处理两套系统,结果合并 | 双写、Serving Layer |
| Kappa 架构 | 只用流处理,通过消息队列重放实现批处理 | Kafka、重放、统一逻辑 |
| ODS/DWD/DWS/ADS | 数仓四层分层模型,从原始到应用 | 分层建模、数据治理 |
| 批流一体 | 用同一套引擎和 API 处理离线和实时 | Flink、有界/无界流 |
| CDC | 捕获数据库变更日志,实现实时数据同步 | Binlog、Debezium、Flink CDC |
| 表格式(Table Format) | 在文件之上提供事务、Schema 管理的元数据层 | Delta、Iceberg、Hudi |