第19章 大数据架构设计
核心知识点
1. 传统数据处理的问题
- 数据量从 MB/GB → TB/PB 级别
- 单一数据库无法支撑并发访问
- 解决方案演进:异步队列 → 读写分离 → 分库分表 → 分区(Horizontal Partitioning)
- 核心问题:传统架构性能被压榨到极限,"挤牙膏"式优化
2. 大数据 5V 特征
- Volume(大量):数据量巨大
- Velocity(高速):数据产生和处理速度快
- Variety(多样):结构化、半结构化、非结构化
- Value(价值):价值密度低但总体价值高
- Veracity(真实性):数据质量参差不齐
3. 大数据处理面临挑战
- 非结构化和半结构化数据处理(占85%)
- 复杂性、不确定性特征描述与系统建模
- 数据隐私保护与安全性
4. Lambda 架构 ⭐必考
- 三层结构:
- 批处理层(Batch Layer):存储全量数据,定期计算批处理视图
- 速度层/实时层(Speed Layer):处理实时数据,低延迟计算
- 服务层(Serving Layer):合并批处理视图和实时视图,响应查询
- 特点:
- 同时维护批处理和实时两套代码
- 复杂度高但容错性强
- 批处理修正实时层的错误
- 数据流:新数据 → 速度层(实时)+ 批处理层(定期)→ 服务层(合并查询)
5. Kappa 架构 ⭐必考
- 核心思想:取消批处理层,只用一个实时处理层
- 实现:所有数据都通过消息队列(Kafka),由流处理引擎实时处理
- 特点:
- 只维护一套代码,复杂度低
- 需要消息队列支持数据回放(Kafka 可以保留历史数据)
- 实时处理保证数据一致性
- Lambda vs Kappa 对比:
| 维度 | Lambda | Kappa | |------|--------|-------| | 处理层 | 批处理+实时 | 仅实时 | | 代码量 | 两套代码 | 一套代码 | | 复杂度 | 高 | 低 | | 容错性 | 强(批处理可修正) | 依赖消息队列 | | 数据一致性 | 批处理+实时合并 | 实时处理保证 | | 适用场景 | 需要历史数据重算 | 实时性要求高 |
6. 数据仓库(DW)
- 四个特征:
- 面向主题:按业务主题组织数据
- 集成:消除源数据不一致性
- 相对稳定:大量查询,少量修改
- 反映历史变化:记录历史信息
- 分层架构:ODS → DWD → DWS → ADS
- OLAP 操作:上卷(Roll-up)、下钻(Drill-down)、切片(Slice)、切块(Dice)
- 维度建模:星型模型(事实表+维度表)、雪花模型(维度表进一步规范化)
7. 数据湖(Data Lake)
- 定义:存储大量结构化、半结构化和非结构化数据的集中式存储库
- 特点:存储原始数据,后续按需处理
- 与数据仓库区别:数据仓库是处理后的结构化数据,数据湖是原始数据
8. 湖仓一体(Lakehouse)
- 概念:融合数据湖和数据仓库的优势
- 特点:
- 支持事务(ACID)
- 支持Schema和治理
- 直接在数据湖上支持 BI 和 ML
- 代表:Delta Lake、Apache Iceberg、Apache Hudi
9. 流处理 vs 批处理
| 维度 | 批处理 | 流处理 | |------|--------|--------| | 数据范围 | 有界数据集 | 无界数据流 | | 处理方式 | 收集后批量处理 | 实时逐条处理 | | 延迟 | 高(分钟~小时) | 低(毫秒~秒) | | 代表技术 | MapReduce、Spark Core | Storm、Flink、Spark Streaming | | 适用场景 | 历史数据分析 | 实时监控、推荐 |
10. 大数据技术栈
- 存储:HDFS、S3、HBase、Cassandra
- 计算:MapReduce、Spark、Flink
- 消息队列:Kafka、RabbitMQ
- 资源管理:YARN、Kubernetes
- 调度:Oozie、Airflow
- 查询:Hive、Presto、ClickHouse
11. 读写分离与分库分表
- 读写分离:Master 负责写,Slave 负责读
- 分库分表:按 key 的 Hash 值分散到不同库/表
- Resharding:重新分片,非常耗时痛苦
真题考点映射
| 年份 | 考点 | 题型 | |------|------|------| | 2024上 | Lambda 架构 | 论文(25分) | | 2023下 | Lambda vs Kappa 对比、Kafka | 案例(25分) | | 2022下 | 湖仓一体 | 论文 | | 2021下 | NoSQL 数据库 | 论文 | | 2021上 | NoSQL | 论文 |
易错点/陷阱
- Lambda 有三层(批处理+速度+服务),不是两层
- Kappa 取消了批处理层,不是取消速度层
- Kafka 是消息队列,不是数据库
- 数据仓库面向主题(不是面向应用)
- OLAP 用于分析,OLTP 用于事务处理
- 星型模型 vs 雪花模型:星型维度表不规范化(性能好),雪花模型维度表进一步规范化(节省空间)
- 湖仓一体支持 ACID 事务(这是与数据湖的关键区别)
案例分析模板
题型:Lambda/Kappa 架构设计
答题框架:
- 需求分析:是否需要实时处理?是否需要历史数据重算?
- 架构选择:
- 需要实时+历史 → Lambda
- 只需实时且可回放 → Kappa
- 架构图补充:
- Lambda:数据源 → 批处理层 + 速度层 → 服务层 → 查询
- Kappa:数据源 → Kafka → 流处理引擎 → 服务层 → 查询
- 对比说明:从复杂度、代码量、容错性、一致性等维度
题型:数据仓库设计
答题框架:
- 分层设计:ODS → DWD → DWS → ADS
- 维度建模:星型/雪花模型选择
- OLAP 操作:上卷/下钻/切片/切块
论文素材
- 可写主题:Lambda 架构、大数据处理、数据仓库、数据湖、湖仓一体、NoSQL
- 项目场景:
- 电商实时推荐系统(流处理+批处理)
- 金融风控系统(实时交易分析)
- 日志分析平台(海量日志处理)
- 论述要点:
- 数据处理需求分析
- 架构选择理由(Lambda vs Kappa)
- 技术选型与实现
- 性能优化与经验教训
- 数据治理与质量保障