大数据生态全景概览
什么是大数据
大数据(Big Data)通常用 4V 来描述其核心特征:
| 特征 | 说明 |
|---|---|
| Volume(体量) | 数据规模从 TB 到 PB 甚至 EB 级别 |
| Velocity(速度) | 数据产生和处理的速度极快,要求实时或近实时响应 |
| Variety(多样性) | 结构化、半结构化、非结构化数据并存 |
| Veracity(真实性) | 数据质量参差不齐,需要清洗和校验 |
大数据技术栈全景图
┌─────────────────────────────────────────────────────────────────┐
│ 应用层 / 业务层 │
│ BI 报表 · 机器学习 · 实时大屏 · 数据 API │
├─────────────────────────────────────────────────────────────────┤
│ 查询 & OLAP 引擎 │
│ ClickHouse · Doris · Presto/Trino · Hive │
├──────────────────────────┬──────────────────────────────────────┤
│ 批处理计算 │ 流处理计算 │
│ MapReduce · Spark Core │ Flink · Spark Streaming │
│ Spark SQL · Spark MLlib │ Kafka Streams │
├──────────────────────────┴──────────────────────────────────────┤
│ 消息队列 & 数据集成 │
│ Kafka · Flume · Sqoop · DataX │
├─────────────────────────────────────────────────────────────────┤
│ 存储层 │
│ HDFS · HBase · Hive · Delta Lake · Iceberg │
├─────────────────────────────────────────────────────────────────┤
│ 资源调度 & 协调 │
│ YARN · Kubernetes · Zookeeper │
├─────────────────────────────────────────────────────────────────┤
│ 工作流调度 │
│ Airflow · DolphinScheduler │
└─────────────────────────────────────────────────────────────────┘核心架构范式
Lambda 架构
Lambda 架构由 Nathan Marz 提出,将数据处理分为三层:
数据源
│
├──► 批处理层(Batch Layer) ──► 批处理视图(Hive/Spark)
│ │
├──► 速度层(Speed Layer) ──► 实时视图(Flink/Kafka)
│ │
└──────────────────────────────► 服务层(Serving Layer)──► 查询- 批处理层:处理历史全量数据,结果准确但延迟高(小时级)
- 速度层:处理最新增量数据,延迟低(秒级)但可能不完整
- 服务层:合并批处理和速度层结果,对外提供查询
缺点:维护两套代码(批处理 + 流处理),复杂度高。
Kappa 架构
Kappa 架构由 Jay Kreps 提出,去掉批处理层,一切皆流:
数据源 ──► Kafka(消息队列)──► Flink(流处理)──► 服务层 ──► 查询
│
└──► 历史数据重放(调整 offset 重新消费)- 只维护一套流处理代码
- 历史数据通过重放 Kafka 消息来处理
- 适合数据量不是特别大、实时性要求高的场景
数据湖架构(现代 Lakehouse)
原始数据(ODS)──► 数据湖(Delta Lake / Iceberg)
│
┌─────┴─────┐
│ │
Bronze Silver Gold
(原始层) (清洗层) (聚合层)
│
BI / ML / API主流技术栈对比
批处理框架
| 框架 | 语言 | 特点 | 适用场景 |
|---|---|---|---|
| MapReduce | Java | 稳定,磁盘 I/O 多 | 超大规模离线计算 |
| Spark | Scala/Java/Python | 内存计算,速度快 10-100x | 批处理、交互式查询、ML |
| Hive | SQL | 基于 MapReduce/Tez,易用 | 数据仓库、SQL 分析 |
流处理框架
| 框架 | 延迟 | 吞吐 | 状态管理 | 特点 |
|---|---|---|---|---|
| Spark Streaming | 秒级(微批) | 高 | 有限 | 与 Spark 生态无缝集成 |
| Flink | 毫秒级 | 极高 | 强大 | 真正的流处理,精确一次语义 |
| Kafka Streams | 毫秒级 | 高 | 有 | 轻量,无需独立集群 |
OLAP 引擎
| 引擎 | 查询延迟 | 数据规模 | 特点 |
|---|---|---|---|
| ClickHouse | 毫秒~秒 | PB 级 | 极致列式压缩,单表查询最快 |
| Apache Doris | 毫秒~秒 | PB 级 | 实时导入,MySQL 协议兼容 |
| Presto/Trino | 秒~分钟 | 无限制 | 联邦查询,跨数据源 |
| Hive | 分钟~小时 | PB 级 | 成熟稳定,适合离线 |
数据流向全链路
业务系统(MySQL/Oracle)
│
▼
数据采集层
Flume(日志)/ Sqoop(关系型DB)/ DataX(异构)/ Kafka(实时)
│
▼
原始数据存储
HDFS(文件)/ Kafka(流)/ HBase(KV)
│
▼
数据处理层
Spark(批)/ Flink(流)/ Hive(SQL)
│
▼
数据仓库 / 数据湖
Hive ODS/DWD/DWS/ADS / Delta Lake / Iceberg
│
▼
OLAP 查询层
ClickHouse / Doris / Presto
│
▼
应用层
BI 报表 / 机器学习 / 实时大屏 / 数据 API学习路径建议
阶段一:基础(1-2 个月)
- Linux 基础 + Shell 脚本
- Java/Scala/Python 基础
- HDFS + YARN + MapReduce 原理
- Hive SQL 实战
阶段二:核心(2-3 个月)
- Spark Core → Spark SQL → Spark Streaming
- Kafka 消息队列
- Zookeeper 协调服务
- HBase 列式存储
阶段三:进阶(2-3 个月)
- Flink 流批一体
- ClickHouse / Doris OLAP
- Delta Lake / Iceberg 数据湖
- Airflow 工作流调度
阶段四:工程化(持续)
- 集群部署与运维
- 性能调优
- 监控体系建设
- 数据质量管理
建议
先把 Spark + Kafka + Hive 这条主线打通,能做完整的离线数仓项目,再扩展 Flink 实时链路。