大数据系统学习路线:完整版
学习主线
text
编程与SQL → 计算机基础 → 数据库 → 分布式系统 → Hadoop → Spark → Kafka/Flink → 数据仓库/数据湖 → 工程实践 → 研究级
第一阶段:编程基础
Python
| 书名 | 定位 |
|---|---|
| 《Python编程:从入门到实践》 | 入门语法 |
| 《利用Python进行数据分析》 | Pandas/NumPy |
| 《流畅的Python》 | 进阶特性 |
| 《Python数据科学手册》 | 数据处理工具链 |
必须掌握
- 基础语法、面向对象、文件与网络编程
- NumPy、Pandas、Matplotlib
- JSON、CSV、Parquet 数据格式
Java / Scala(大数据开发方向必学)
| 书名 | 定位 |
|---|---|
| 《Java核心技术》 | Java 基础 |
| 《Effective Java》 | Java 进阶 |
| 《Scala编程》 | Spark 源码基础 |
数据分析方向以 Python 为主,大数据开发和源码阅读方向 Java + Scala 都需要掌握
第二阶段:SQL 与数据库
SQL
| 书名 | 定位 |
|---|---|
| 《SQL必知必会》 | SQL 入门 |
| 《SQL Cookbook》 | 实用查询技巧 |
必须掌握
- 多表连接、子查询、窗口函数
- 索引原理与执行计划分析
- 事务、锁、MVCC
- 分库分表、OLTP 与 OLAP 的区别
数据库原理
| 书名 | 定位 |
|---|---|
| 《数据库系统概念》 | 理论基础 |
| 《数据库管理系统》 | 实现原理 |
| 《高性能MySQL》 | 工程实践 |
| 《数据库内部结构解析》 | 存储引擎深度 |
第三阶段:计算机基础
数据结构与算法
| 书名 | 定位 |
|---|---|
| 《算法图解》 | 入门直觉建立 |
| 《编程珠玑》 | 工程实用算法 |
| 《算法导论》 | 系统理论 |
| 《数据结构与算法分析》 | Java 视角 |
大数据方向优先掌握
text
外部排序 → 布隆过滤器 → 一致性哈希 → HyperLogLog → Top-K 流式算法 → 近似算法 → 图算法
重点是理解这些结构解决了什么问题,而不是算法证明
操作系统、网络与 Linux
| 书名 | 定位 |
|---|---|
| 《深入理解计算机系统》 | 系统核心 |
| 《现代操作系统》 | OS 原理 |
| 《计算机网络:自顶向下方法》 | 网络基础 |
| 《Linux命令行与Shell脚本编程大全》 | 实操 |
| 《鸟哥的Linux私房菜》 | Linux 系统管理 |
必须掌握
- 进程与线程、内存与虚拟内存
- 文件系统、IO 与多路复用
- TCP/IP、RPC
- 磁盘吞吐与网络带宽
- 容器与虚拟化基础
第四阶段:分布式系统
核心书单
| 书名 | 定位 |
|---|---|
| 《Designing Data-Intensive Applications》 | 最优先阅读 |
| 《分布式系统概念与设计》 | 理论基础 |
| 《分布式系统原理与范型》 | 范型与模型 |
DDIA 是这个阶段最重要的一本书,系统覆盖存储、复制、分区、事务、批处理、流处理和一致性,读完之后再看具体框架会有完全不同的理解深度
必须掌握
- CAP 与 PACELC
- 一致性模型(强一致、最终一致、线性一致)
- 主从复制、Raft/Paxos
- 分布式事务、分布式锁
- 数据分区、故障恢复
- 幂等性、Exactly-once 与 At-least-once
第五阶段:Hadoop 体系
书单
| 书名 | 定位 |
|---|---|
| 《Hadoop权威指南》 | 系统入门 |
| 《Hadoop技术内幕:HDFS》 | 存储层原理 |
| 《Hadoop技术内幕:MapReduce》 | 计算层原理 |
| 《Hadoop技术内幕:YARN》 | 资源调度原理 |
| 《Hive编程指南》 | SQL on Hadoop |
学习策略
- MapReduce 编程模型值得理解:Map → Shuffle → Reduce 是理解 Spark Shuffle、Flink Batch、Hash Join 的概念基础
- 不建议在老式 MapReduce 业务开发上投入大量时间
- 重点放在 HDFS 架构、YARN 调度机制和 Hive 数据模型
第六阶段:Spark
书单与推荐顺序
text
Learning Spark → Spark权威指南 → High Performance Spark
| 书名 | 定位 |
|---|---|
| 《Learning Spark》(第二版) | 入门,覆盖 Spark 3.0 |
| 《Spark权威指南》 | 系统全面 |
| 《High Performance Spark》 | 性能调优 |
| 《Spark实战》 | 工程实践 |
必须掌握
- RDD、DataFrame、Dataset 三层抽象及其关系
- Spark SQL 与 Catalyst 优化器
- Tungsten 执行引擎
- Shuffle 机制与 Partition 设计
- Broadcast Join 与 Sort-Merge Join
- Structured Streaming
- Checkpoint 与容错
- 性能调优(内存、并发、数据倾斜)
第七阶段:Kafka 与 Flink
Kafka
| 书名 | 定位 |
|---|---|
| 《Kafka权威指南》 | 系统入门 |
| 《深入理解Kafka:核心设计与实践原理》 | 原理深度 |
| 《Kafka Streams in Action》 | 流处理应用 |
| 《Kafka核心源码分析》 | 源码级别 |
必须掌握
- Topic、Partition、Offset
- Producer、Consumer、Consumer Group
- Rebalance 机制、ISR、Leader/Follower
- Kafka Connect、Kafka Streams
- Schema Registry、幂等生产与事务
Flink 与流处理理论
| 书名 | 定位 |
|---|---|
| 《Streaming Systems》 | 流处理理论基础,优先读 |
| 《Stream Processing with Apache Flink》 | Flink 系统学习 |
| 《Flink原理、实战与性能优化》 | 工程实践 |
必须掌握
- Event Time 与 Processing Time 的本质区别
- Window 类型(Tumbling、Sliding、Session)
- Watermark 机制与延迟数据处理
- State 与状态后端(RocksDB)
- Checkpoint 与 Savepoint
- Exactly-once 语义实现原理
- Backpressure 识别与处理
- CEP 复杂事件处理
- 流批一体
第八阶段:数据仓库与数据湖
数据仓库
| 书名 | 定位 |
|---|---|
| 《数据仓库工具箱》 | 维度建模经典 |
| 《数据仓库生命周期工具箱》 | 完整生命周期 |
| 《Building the Data Warehouse》 | 架构设计 |
必须掌握
- 维度建模:事实表、维度表、星型模型、雪花模型
- 拉链表、SCD(缓慢变化维)
- 数据分层:ODS → DWD → DWS → ADS
- 指标体系设计
- 数据血缘
数据工程
| 书名 | 定位 |
|---|---|
| 《Fundamentals of Data Engineering》 | 数据平台全局视角 |
| 《Data Engineering with Python》 | Python 工程实践 |
| 《Data Management at Scale》 | 大规模数据管理 |
数据湖与湖仓
核心技术栈
| 技术 | 定位 |
|---|---|
| Apache Iceberg | 开放表格式,主流选择 |
| Delta Lake | Databricks 生态 |
| Apache Hudi | 增量处理场景 |
| Trino / Presto | 交互式查询引擎 |
| Parquet / ORC | 列存文件格式 |
必须掌握
- Schema Evolution 与 Partition Evolution
- Snapshot、Time Travel
- Compaction、Manifest、Catalog
- 存算分离架构
- Lakehouse 与传统数仓的边界
第九阶段:工程能力补充
任务调度与编排
这是书单中缺失但实际工程中必须面对的部分:
| 工具 | 定位 |
|---|---|
| Apache Airflow | 最主流的工作流调度 |
| Apache DolphinScheduler | 国内广泛使用 |
| Prefect | 现代化 Python 调度 |
数据质量与治理
| 工具 / 方向 | 定位 |
|---|---|
| Great Expectations | 数据质量检测 |
| Apache Atlas | 元数据管理与数据血缘 |
| OpenLineage | 血缘标准协议 |
| 数据目录 | 元数据检索与治理 |
云原生基础设施
text
Docker → Kubernetes → 对象存储(S3/OSS/MinIO)→ 存算分离架构 → 云上托管大数据服务
存算分离是当前数据湖架构的核心思想,不理解对象存储就无法真正理解 Iceberg 的设计
监控与可观测性
| 书名 / 工具 | 定位 |
|---|---|
| 《Site Reliability Engineering》 | SRE 工程文化 |
| 《Database Reliability Engineering》 | 数据库可靠性 |
| Prometheus + Grafana | 指标监控 |
| OpenTelemetry | 可观测性标准 |
第十阶段:源码阅读
推荐阅读顺序
text
HDFS → MapReduce → Spark Core → Spark SQL → Kafka → Flink Runtime → Iceberg → Trino
每个系统重点关注的模块
| 系统 | 重点模块 |
|---|---|
| HDFS | NameNode 元数据、Block 副本管理、心跳机制 |
| Spark Core | DAG 调度、Stage 划分、Shuffle 实现 |
| Spark SQL | Catalyst 优化器、Tungsten、物理计划 |
| Kafka | 日志存储、ISR 管理、消费者组协调 |
| Flink | JobGraph 生成、Checkpoint 协调、状态后端 |
| Iceberg | 文件格式、Snapshot 管理、Catalog 实现 |
配套书籍
- 《深入理解计算机系统》
- 《数据库内部结构解析》
- 《深入理解Kafka:核心设计与实践原理》
第十一阶段:论文阅读
第一批:理解问题从哪里来
| 论文 | 年份 | 核心贡献 |
|---|---|---|
| Google File System | 2003 | 分布式存储起点 |
| MapReduce | 2004 | 大规模批处理编程模型 |
| Bigtable | 2006 | 结构化分布式存储 |
第二批:理解现代计算引擎
| 论文 | 年份 | 核心贡献 |
|---|---|---|
| Dremel | 2010 | 列存与嵌套数据查询 |
| Resilient Distributed Datasets | 2012 | Spark 理论基础 |
| Spark SQL | 2015 | Catalyst 优化器 |
| MillWheel | 2013 | 流处理有状态计算 |
| The Dataflow Model | 2015 | 统一批流理论模型 |
| Apache Flink | 2015 | 与 Dataflow 对照阅读 |
第三批:理解现代数据平台
| 论文 | 年份 | 核心贡献 |
|---|---|---|
| Kafka | 2011 | 高吞吐消息系统 |
| Spanner | 2012 | 全球分布式数据库 |
| Mesa | 2014 | 数据仓库增量更新 |
| Lakehouse | 2021 | 湖仓一体架构定义 |
| Apache Iceberg Table Format | 2023 | 开放表格式规范 |
三条方向路线
就业方向
text
Python/Java → SQL → MySQL → Kafka → Spark → Flink → Hive/Iceberg → Airflow → 数据仓库项目
起步建议
text
第一个月:Python 基础 + Pandas + SQL 窗口函数
第二个月:MySQL 搭库,理解索引与执行计划
第三个月:DDIA 前五章 + 搭 Kafka 本地环境收发消息
之后:根据岗位方向选择深入 Spark 或 Flink
科研方向
text
数据库原理 → 分布式系统 → DDIA → 经典论文 → Spark/Flink 源码 → 复现近三年 VLDB/SIGMOD 论文实验
选择一个具体问题复现论文实验,比实现简化版系统更能暴露真实技术差距
AI 与大数据结合方向
text
Python → SQL → Pandas → Spark MLlib → Mining of Massive Datasets → 推荐系统 → 分布式机器学习 → 向量数据库 → Feature Store
当前值得关注的新方向
- 向量数据库:Milvus、pgvector
- 特征存储:Feature Store 设计
- 大模型推理的数据基础设施
实践项目:电商实时数据平台
边学边做一个覆盖完整链路的项目:
text
MySQL
↓(CDC 采集)
Debezium
↓
Kafka(消息队列)
↓
Flink(实时清洗与计算)
↓
Iceberg on MinIO(数据湖存储)
↓
Spark(批处理与数仓建设)
↓
Trino(联邦查询)
↓
Superset(数据可视化)
↓
Airflow(任务调度)
↓
Prometheus + Grafana(监控)
本地最小环境搭建
Bash
# 用 Docker Compose 启动核心组件
Kafka + Flink + MinIO + Iceberg + Trino + Superset
这个过程本身会暴露大量实际问题,比单纯读书更有效
优先读的核心十本
如果只能选十本,按顺序读这些:
| 顺序 | 书名 | 阶段 |
|---|---|---|
| 1 | 《Python编程:从入门到实践》 | 编程入门 |
| 2 | 《利用Python进行数据分析》 | 数据处理 |
| 3 | 《SQL必知必会》 | SQL 基础 |
| 4 | 《数据库系统概念》 | 数据库原理 |
| 5 | 《深入理解计算机系统》 | 系统基础 |
| 6 | 《Designing Data-Intensive Applications》 | 分布式核心 |
| 7 | 《Hadoop权威指南》 | 大数据体系 |
| 8 | 《Learning Spark》 | 批处理核心 |
| 9 | 《Streaming Systems》 | 流处理理论 |
| 10 | 《Fundamentals of Data Engineering》 | 平台全局视角 |
一句话原则
不要按顺序把书读完,带着具体问题去找对应资料。书单的价值是提供问题地图,让你知道哪些问题存在、在哪个层次、用什么解决。
免责声明
本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
浙公网安备 33010602011771号