大数据技术基础
Big Data Technology
📖这门课到底讲什么
大数据技术基础讲授数据规模超出单机处理能力后的技术体系:分布式文件系统 HDFS 与计算框架 MapReduce 与 Spark 的内存计算模型、数据仓库与分层建模(ODS、DWD、DWS、ADS 与维度建模)、SQL 化查询引擎(Hive、Spark SQL)与列式存储(Parquet、ORC)、流式处理(Kafka、Flink 与窗口计算)、资源调度(YARN 与容器化)、数据治理与质量,以及典型的数据分析链路与调优思路。学完你应能把一个批处理与一个流处理任务从数据接入跑到结果输出,理解分区与并行度与数据倾斜对性能的影响,并能设计一个具备数据分层的中小型数据仓库。
🎯为什么必须学好
数据开发、数据仓库、算法工程与推荐系统的岗位都要求掌握 Hadoop 与 Spark 生态,面试常问 MapReduce 与 Spark 的区别、Spark 为什么快、数据倾斜如何解决、小文件问题如何处理、Flink 与 Spark Streaming 的差别。企业中的报表、指标、用户画像、特征工程几乎都建立在这套体系上,实习中能写 SQL 并调优的候选人比只会本地 pandas 的候选人有明显优势。它是把数据处理能力从单机扩展到集群的关键一步。
📌核心知识清单
- 大数据概述与生态:数据规模特征、批处理与流处理与交互式分析、Hadoop 生态组件(HDFS、YARN、MapReduce、Hive、HBase)与 Spark 生态的关系
- HDFS 原理:NameNode 与 DataNode、块与副本策略、读写流程、小文件问题与合并方案、故障恢复
- MapReduce 模型:Map 与 Shuffle 与 Reduce 阶段、分区与排序与合并、Combiner 的作用、WordCount 到 Join 的实现思路、任务调优与推测执行
- Spark 核心:RDD 与依赖关系与 DAG、窄依赖与宽依赖与 Stage 划分、惰性求值与缓存策略、Shuffle 机制与调优、内存管理与序列化
- Spark SQL 与数据仓库:DataFrame 与 Dataset、Catalyst 优化器与谓词下推、Hive 与元数据、数据仓库分层建模与维度建模(星型与雪花模型)、缓慢变化维
- 存储与格式:列式存储(Parquet、ORC)与行式存储对比、压缩编码、分区分桶与数据组织、数据湖与湖仓一体概念
- 流计算:Kafka 的分区与消费组与位移管理、Spark Streaming 与 Structured Streaming、Flink 的事件时间与水位线、窗口与状态与精确一次语义
- 数据治理与工程化:数据质量校验与监控、元数据与血缘、调度系统(Airflow、DolphinScheduler)、资源调度与队列、数据安全与权限、典型性能问题(数据倾斜、小文件、GC 与内存溢出)的排查方法
✍️怎么学(可执行步骤)
- 先跑通再深挖:用 Docker 或虚拟机搭一个三节点 Hadoop 与 Spark 集群(或用官方镜像),完成 HDFS 上传下载与一个 WordCount 作业,再逐步加 Hive 与 Spark SQL
- 主线教材用《Hadoop权威指南》或林子雨《大数据技术原理与应用》,配合官方文档,重点是 HDFS 与 MapReduce 与 Spark 三大块
- 用公开数据集做完整项目:下载一份百万行以上的日志或电商数据,用 Spark 完成清洗、聚合与指标计算,再用 Spark SQL 输出报表并对比优化前后耗时
- 做一次调优实验:人为制造数据倾斜(如某个 key 占比极高),观察任务耗时分布,再用加盐打散或广播小表方式优化,记录前后对比
📚推荐教材与书籍
国内使用最广的教材,覆盖 Hadoop 与 Spark 与 NoSQL,章节与考试契合度高
Hadoop 领域权威,深入 HDFS、MapReduce 与 YARN 的实现与调优,重点前三部分
Spark 入门首选,RDD 与 DataFrame 操作与调优章节清晰实用
从系统视角理解批处理与流处理的本质与取舍,第10至11章直接对应本课
🎬视频课程 / 公开课
厦门大学林子雨课程,与教材配套,实验指导详细
覆盖 Hadoop 与 Spark 与流处理,作业需在集群上跑真实任务
🌐网站与文档
API 与调优参数权威参考,写作业时查算子与配置
流处理的事件时间、窗口与状态机制说明,做实时任务必查
找千万行级公开数据集练手,避免自己造数据
🐙GitHub 开源资料
Spark 源码,读 DAG 调度与 Shuffle 实现能真正理解为什么快
Hadoop 源码与文档,深入理解 HDFS 与 YARN 的实现细节
消息队列主流实现,做流处理实验时的必备组件
动手学数据分析,从单机数据分析过渡到大数据处理的实践教程
🧪动手实践任务
实践 1
在本地伪分布式或容器集群上完成一次完整链路:把百万行 CSV 或日志文件上传到 HDFS,用 Spark 清洗并按维度聚合,结果写入 Parquet 后用 Spark SQL 查询报表
实践 2
实现 MapReduce 或 Spark 版本的二次排序与多表 Join,输出结果并解释 Shuffle 过程中发生了哪些数据传输与磁盘操作
实践 3
搭建一个实时统计任务:用 Kafka 生产模拟点击数据,用 Structured Streaming 或 Flink 按分钟窗口统计 PV 与 UV 并输出到文件或控制台
实践 4
完成一次性能优化报告:制造数据倾斜与小文件问题,分别用广播 Join、加盐打散、合并小文件等手段优化,记录执行计划与耗时变化
🧾考试与面试
💼 面试会怎么考
高频:MapReduce 的流程与 Shuffle 的作用;Spark 为什么比 MapReduce 快(内存计算、DAG 优化、算子流水线);RDD 的宽窄依赖与 Stage 划分、cache 与 persist 的区别与选择;数据倾斜的表现、原因与解决方案;小文件问题如何产生与治理;Hive 内部表与外部表的区别;数仓分层为什么这么分、维度建模与缓慢变化维;Spark Streaming 与 Flink 的区别与选择、精确一次语义如何实现;Spark 内存溢出与 GC 问题如何排查;如何判断一个作业是否真的在分布式并行执行。
📝 期末与考研怎么过
期末多为概念与流程题:HDFS 读写流程、MapReduce 与 Spark 执行流程、DAG 与 Stage 划分、Shuffle 原理、Hive 与数仓分层设计、流处理的时间语义与窗口分类、给定 SQL 或算子说明执行过程。备考方式是把各组件流程画成图并背熟,把 Spark 与 MapReduce 对比做成表,练习数仓分层设计题。目标八十分以上。
⚠️ 常见坑
- 只会本地 pandas 处理数据,没有真正在集群上跑过任务,面试一问执行流程与调优就暴露
- 不理解分区与并行度,任务只在一个核上跑还以为用了分布式;应检查分区数与任务并发
- 忽视数据倾斜,作业卡在最后几个任务上却不断加资源;正确做法是定位热点 key 并从数据分布入手
- 把所有数据都往内存里塞,遭遇 OOM 与 GC 问题;应理解缓存与溢写策略与序列化开销
- 数仓设计缺少分层与主题划分,把所有表堆在 ODS 层导致重复计算与口径混乱