第19章 大数据架构设计

核心知识点

1. 传统数据处理的问题

  • 数据量从 MB/GB → TB/PB 级别
  • 单一数据库无法支撑并发访问
  • 解决方案演进:异步队列 → 读写分离 → 分库分表 → 分区(Horizontal Partitioning)
  • 核心问题:传统架构性能被压榨到极限,"挤牙膏"式优化

2. 大数据 5V 特征

  1. Volume(大量):数据量巨大
  2. Velocity(高速):数据产生和处理速度快
  3. Variety(多样):结构化、半结构化、非结构化
  4. Value(价值):价值密度低但总体价值高
  5. Veracity(真实性):数据质量参差不齐

3. 大数据处理面临挑战

  1. 非结构化和半结构化数据处理(占85%)
  2. 复杂性、不确定性特征描述与系统建模
  3. 数据隐私保护与安全性

4. Lambda 架构 ⭐必考

  • 三层结构
    1. 批处理层(Batch Layer):存储全量数据,定期计算批处理视图
    2. 速度层/实时层(Speed Layer):处理实时数据,低延迟计算
    3. 服务层(Serving Layer):合并批处理视图和实时视图,响应查询
  • 特点
    • 同时维护批处理和实时两套代码
    • 复杂度高但容错性强
    • 批处理修正实时层的错误
  • 数据流:新数据 → 速度层(实时)+ 批处理层(定期)→ 服务层(合并查询)

5. Kappa 架构 ⭐必考

  • 核心思想:取消批处理层,只用一个实时处理层
  • 实现:所有数据都通过消息队列(Kafka),由流处理引擎实时处理
  • 特点
    • 只维护一套代码,复杂度低
    • 需要消息队列支持数据回放(Kafka 可以保留历史数据)
    • 实时处理保证数据一致性
  • Lambda vs Kappa 对比

| 维度 | Lambda | Kappa | |------|--------|-------| | 处理层 | 批处理+实时 | 仅实时 | | 代码量 | 两套代码 | 一套代码 | | 复杂度 | 高 | 低 | | 容错性 | 强(批处理可修正) | 依赖消息队列 | | 数据一致性 | 批处理+实时合并 | 实时处理保证 | | 适用场景 | 需要历史数据重算 | 实时性要求高 |

6. 数据仓库(DW)

  • 四个特征
    1. 面向主题:按业务主题组织数据
    2. 集成:消除源数据不一致性
    3. 相对稳定:大量查询,少量修改
    4. 反映历史变化:记录历史信息
  • 分层架构: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 架构设计

答题框架

  1. 需求分析:是否需要实时处理?是否需要历史数据重算?
  2. 架构选择
    • 需要实时+历史 → Lambda
    • 只需实时且可回放 → Kappa
  3. 架构图补充
    • Lambda:数据源 → 批处理层 + 速度层 → 服务层 → 查询
    • Kappa:数据源 → Kafka → 流处理引擎 → 服务层 → 查询
  4. 对比说明:从复杂度、代码量、容错性、一致性等维度

题型:数据仓库设计

答题框架

  1. 分层设计:ODS → DWD → DWS → ADS
  2. 维度建模:星型/雪花模型选择
  3. OLAP 操作:上卷/下钻/切片/切块

论文素材

  • 可写主题:Lambda 架构、大数据处理、数据仓库、数据湖、湖仓一体、NoSQL
  • 项目场景
    • 电商实时推荐系统(流处理+批处理)
    • 金融风控系统(实时交易分析)
    • 日志分析平台(海量日志处理)
  • 论述要点
    • 数据处理需求分析
    • 架构选择理由(Lambda vs Kappa)
    • 技术选型与实现
    • 性能优化与经验教训
    • 数据治理与质量保障