# 掌握分布式计算核心:深入解读“老汤大数据课程之Spark核心技术”

在大数据生态系统中,Apache Spark 已成为处理海量数据事实上的标准引擎。其基于内存的计算特性,使得它在速度上比传统的 MapReduce 框架快出数十倍甚至上百倍。对于希望从大数据入门转向核心技术掌握的学习者而言,“老汤大数据课程之Spark核心技术”提供了一条结构清晰、循序渐进的学习路径。本课程不仅涵盖了 Spark 的核心编程模型,更从最基础的环境搭建入手,帮助学员打通从理论到实战的“最后一公里”。

从环境搭建开始:夯实基础的关键一步

许多初学者容易忽视环境配置的重要性,直接跳入代码编写,结果往往因为依赖冲突、版本不匹配等问题而寸步难行。本课程反其道而行之,将大量篇幅放在了 Spark 环境的精细化搭建上。

课程首先针对 Windows 开发环境进行了详细讲解,包括如何在 IntelliJ IDEA 中配置 Scala 插件以开发 Spark 应用,以及如何搭建 Spark 的源代码阅读环境。这对于希望深入理解 Spark 源码机制的高级学习者尤为重要。随后,课程转向了 Linux 虚拟机环境下的集群搭建。学员将学习如何在虚拟机中安装和配置 Scala,进而部署 Standalone 模式的 Spark 集群。这一过程并非简单的复制粘贴,而是通过实际动手操作,让学员理解 Master、Worker、Driver 和 Executor 等核心组件之间的交互逻辑。

核心组件与实战提交:从 Shell 到集群

环境就绪后,课程进入了实操阶段。2-5 节专门讲解了如何使用 `spark-submit` 命令将本地开发的 Spark 应用程序提交到集群中运行。这是生产环境中部署应用的标准方式,掌握参数调优和集群资源提交策略是成为一名合格大数据工程师的基本功。此外,课程还详细介绍了 `spark-shell` 的使用技巧以及 Spark 日志级别的设置方法。日志是排查分布式系统故障的最重要依据,学会通过调整日志级别来定位性能瓶颈或运行时错误,是学员必须具备的技能。

课程价值与学习建议

这门课程由经验丰富的讲师老汤打造,其最大亮点在于“体系化”与“细节控”。它不仅仅罗列知识点,而是通过一个个具体的视频片段,将复杂的集群运维细节拆解为可执行的操作步骤。对于零基础或有一定 Java/Scala 基础但缺乏 Spark 实战经验的学习者来说,这是一份极佳的入门指南。

建议学习者在学习过程中,务必亲手搭建集群环境,不要仅停留在观看视频层面。特别是 Spark 集群的内部通信机制、任务调度流程以及资源分配策略,只有通过亲手配置和分析日志,才能真正内化为自己的知识体系。跟随本课程的系统训练,你将能够熟练构建 Spark 开发环境,并具备在分布式集群上部署和调试大数据应用的能力,为后续深入学习 Spark SQL、Structured Streaming 等高级模块打下坚实基础。

课程目录

1-1 [课程答疑] 老汤大数据课程体系介绍 (06:21)
2-1 [Spark环境的搭建(windows)] IntelliJ IDEA开发spark应用 (10:32)
2-2 [Spark环境的搭建(windows)] spark源代码环境的搭建 (06:01)
2-3 [Spark环境的搭建(windows)] Spark集群安装-虚拟机上Scala的安装 (12:33)
2-4 [Spark环境的搭建(windows)] Spark集群环境的搭建 (12:44)
2-5 [Spark环境的搭建(windows)] 集群spark-submit提交应用 (17:42)
2-6 [Spark环境的搭建(windows)] spark-shell说明 (06:46)
2-7 [Spark环境的搭建(windows)] Spark的日志级别的设置 (07:26)
2-8 [Spark环境的搭建(windows)] mysql的安装(后面会用到) (08:13)
2-9 [Spark环境的搭建(windows)] Spark模块学习说明 (03:18)
3-1 [正确理解Spark] Spark是怎么进行分布式计算的? (14:37)
3-2 [正确理解Spark] 数据重新分区概述 (08:29)
3-3 [正确理解Spark] Spark分布式计算流程中的几个疑问点 (11:17)
3-4 [正确理解Spark] 从上面的疑问中导出RDD的概念 (10:54)
3-5 [正确理解Spark] 实践:RDD API简单使用一 (16:16)
3-6 [正确理解Spark] 实践:RDD API简单使用二 (10:50)
3-7 [正确理解Spark] 理解Spark分布式内存计算的含义 (13:58)
3-8 [正确理解Spark] Spark Core组件解决的问题及其特点 (10:52)
3-9 [正确理解Spark] Spark SQL组件解决的问题及其特点一 (20:33)
3-10 [正确理解Spark] Spark SQL组件解决的问题及其特点二 (10:34)
3-11 [正确理解Spark] Spark Streaming组件(了解即可) (13:22)
3-12 [正确理解Spark] Spark Graphx组件(了解即可) (17:23)
3-13 [正确理解Spark] Spark ml组件(了解即可) (11:42)
4-1 [Spark核心编程模型之RDD API] 再次理解RDD概念 (13:04)
4-2 [Spark核心编程模型之RDD API] 补充课 (17:24)
4-3 [Spark核心编程模型之RDD API] 怎么样创建RDD(必须学习) (12:40)
4-4 [Spark核心编程模型之RDD API] parallelize和makeRDD的实现原理 (13:12)
4-5 [Spark核心编程模型之RDD API] RDD的依赖设计及其特点(必须学习的知识) (16:41)
4-6 [Spark核心编程模型之RDD API] HashPartitioner原理(必须学习) (13:42)
4-7 [Spark核心编程模型之RDD API] 对RDD合理分区能提高性能(必须学习) (17:16)
4-8 [Spark核心编程模型之RDD API] RangePartitioner的原理(必须学习) (18:52)
4-9 [Spark核心编程模型之RDD API] Partitioner源码解析 (15:52)
4-10 [Spark核心编程模型之RDD API] 实战:自定义Partitioner(必须学习) (10:00)
4-11 [Spark核心编程模型之RDD API] Hash对比Range Partitioner(必须学习) (07:35)
4-12 [Spark核心编程模型之RDD API] 实战:coalesce使用场景(非常的重要) (11:02)
4-13 [Spark核心编程模型之RDD API] coalesce原理讲解 (15:15)
4-14 [Spark核心编程模型之RDD API] coalesce源码解析 (18:31)
4-15 [Spark核心编程模型之RDD API] 单类型transformation api(必须学习) (19:43)
4-16 [Spark核心编程模型之RDD API] MapPartitionsRDD的原理代码详解 (12:52)
4-17 [Spark核心编程模型之RDD API] RDD的采样api(sample等)(了解即可) (17:15)
4-18 [Spark核心编程模型之RDD API] RDD分层采样api(了解即可) (10:54)
4-19 [Spark核心编程模型之RDD API] 实践:RDD的pipe api的使用 (17:41)
4-20 [Spark核心编程模型之RDD API] RDD的pipe的原理深入讲解 (15:04)
4-21 [Spark核心编程模型之RDD API] 单类型RDD的基本action api的讲解 (20:05)
4-22 [Spark核心编程模型之RDD API] combineBykey的七大参数的详解一(必须学习) (18:33)
4-23 [Spark核心编程模型之RDD API] combineBykey的七大参数的详解二(必须学习) (14:57)
4-24 [Spark核心编程模型之RDD API] ShuffleRDD的原理详解 (17:00)
4-25 [Spark核心编程模型之RDD API] 基于combineByKey的api详解 (17:11)
4-26 [Spark核心编程模型之RDD API] 实践:combineBykey实战以及使用过程中需要注意的点 (19:18)
4-27 [Spark核心编程模型之RDD API] reduceByKey和groupByKey的对比 (08:25)
4-28 [Spark核心编程模型之RDD API] cogroup api的感官认识(必须学习) (10:23)
4-29 [Spark核心编程模型之RDD API] 通过原理图和源代码详解cogroup原理 (17:05)
4-30 [Spark核心编程模型之RDD API] join等api的原理实现 (09:27)
4-31 [Spark核心编程模型之RDD API] subtractByKey的原理(了解即可) (10:33)
4-32 [Spark核心编程模型之RDD API] sortedByKey原理(了解即可) (14:40)
4-33 [Spark核心编程模型之RDD API] count等计数api(了解即可) (17:22)
4-34 [Spark核心编程模型之RDD API] union的使用及其原理 (13:28)
4-35 [Spark核心编程模型之RDD API] intersection(了解即可) (05:55)
4-36 [Spark核心编程模型之RDD API] 笛卡尔积(了解即可) (07:34)
4-37 [Spark核心编程模型之RDD API] zip的使用及其原理 (13:54)
4-38 [Spark核心编程模型之RDD API] RDD的缓存机制,即persist (13:14)
4-39 [Spark核心编程模型之RDD API] checkpoint的作用和实现流程 (13:11)
4-40 [Spark核心编程模型之RDD API] checkpoint实现原理一 (09:31)
4-41 [Spark核心编程模型之RDD API] checkpoint实现原理二 (10:26)
4-42 [Spark核心编程模型之RDD API] broadcast的机制及其用法(必须学习) (07:36)
4-43 [Spark核心编程模型之RDD API] accumulator的使用及其自定义accumulator (10:23)
4-44 [Spark核心编程模型之RDD API] spark支持的读写存储系统 (15:17)
4-45 [Spark核心编程模型之RDD API] HadoopRDD的原理和实现 (09:34)
4-46 [Spark核心编程模型之RDD API] spark支持的通用的文件格式 (15:18)
4-47 [Spark核心编程模型之RDD API] 二进制文件的读写 (09:48)
4-48 [Spark核心编程模型之RDD API] spark sql读写parquet and avro文件 (15:16)
5-1 [项目实战:会话切割] 会话切割含义 (20:00)
5-2 [项目实战:会话切割] 项目总体流程 (04:31)
5-3 [项目实战:会话切割] 项目最终输出的数据结构 (11:46)
5-4 [项目实战:会话切割] maven项目搭建 (11:26)
5-5 [项目实战:会话切割] 原始日志的解析逻辑实现 (06:12)
5-6 [项目实战:会话切割] 加载数据 (07:39)
5-7 [项目实战:会话切割] 解析原始数据 (06:30)
5-8 [项目实战:会话切割] 使用kryo序列化机制 (03:59)
5-9 [项目实战:会话切割] 使用flatMap API (03:51)
5-10 [项目实战:会话切割] 过滤掉非法类型的日志 (04:55)
5-11 [项目实战:会话切割] 函数体中通配符的说明 (04:06)
5-12 [项目实战:会话切割] 按照user进行分组处理 (13:13)
5-13 [项目实战:会话切割] 单个user的Logs按照时间升序排 (07:21)
5-14 [项目实战:会话切割] 会话切割逻辑实现 (15:04)
5-15 [项目实战:会话切割] 会话切割逻辑实现(续) (06:10)
5-16 [项目实战:会话切割] 生成会话 (12:32)
5-17 [项目实战:会话切割] 计算domainLabel字段 (05:46)
5-18 [项目实战:会话切割] 给会话的cookie打标签 (09:21)
5-19 [项目实战:会话切割] 保存RDD数据 (10:37)
5-20 [项目实战:会话切割] 输出代码重构 (07:42)
5-21 [项目实战:会话切割] 输出代码重构(续) (17:11)
5-22 [项目实战:会话切割] 会话切割实现逻辑重构 (06:16)
5-23 [项目实战:会话切割] 会话切割实现逻辑重构(续) (11:12)
5-24 [项目实战:会话切割] debug本地Spark程序 (11:51)
5-25 [项目实战:会话切割] 参数的配置化 (08:35)
5-26 [项目实战:会话切割] spark-submit简介 (04:40)
5-27 [项目实战:会话切割] 集群跑会话切割应用 (15:50)
5-28 [项目实战:会话切割] 给应用打印log (06:59)
5-29 [项目实战:会话切割] 统计会话的个数 (06:17)
5-30 [项目实战:会话切割] 将所有依赖打成一个jar包 (13:41)
5-31 [项目实战:会话切割] 解决本地跑Spark程序报错 (02:04)
6-1 [Spark RDD topN问题(必须学习)] 准备数据 (25:01)
6-2 [Spark RDD topN问题(必须学习)] 两次mapPartitions实现topN (28:23)
6-3 [Spark RDD topN问题(必须学习)] 数据结构PriorityQueue讲解 (14:38)
6-4 [Spark RDD topN问题(必须学习)] 本地topN的实现 (11:01)
6-5 [Spark RDD topN问题(必须学习)] mapPartition加上PriorityQueue实现t (26:16)
6-6 [Spark RDD topN问题(必须学习)] RDD的API-top来解决topN的问题 (08:10)
6-7 [Spark RDD topN问题(必须学习)] Java代码怎么写Spark应用 (17:32)
6-8 [Spark RDD topN问题(必须学习)] Spark分组topN问题 (13:36)
6-9 [Spark RDD topN问题(必须学习)] Spark解决数据倾斜问题 (21:05)
7-1 [怎样正确提交Spark应用] 课程内容 (09:45)
7-2 [怎样正确提交Spark应用] java命令启动JVM (16:16)
7-3 [怎样正确提交Spark应用] java ProcessBuilder启动JVM (17:31)
7-4 [怎样正确提交Spark应用] spark-submit感官认识 (12:22)
7-5 [怎样正确提交Spark应用] master和deploy-mode参数详解 (17:25)
7-6 [怎样正确提交Spark应用] 正确的yarn-client模式 (04:50)
7-7 [怎样正确提交Spark应用] --conf参数详解 (07:28)
7-8 [怎样正确提交Spark应用] driver相关参数的详解 (12:10)
7-9 [怎样正确提交Spark应用] executor相关参数的详解 (14:58)
7-10 [怎样正确提交Spark应用] Spark on Yarn资源分配 (14:57)
7-11 [怎样正确提交Spark应用] --jars参数详解(必须学习) (12:20)
7-12 [怎样正确提交Spark应用] --package相关参数详解 (07:15)
7-13 [怎样正确提交Spark应用] --files与--properties-file参数详解 (08:24)
7-14 [怎样正确提交Spark应用] --queue相关参数的详解 (07:43)
7-15 [怎样正确提交Spark应用] python spark正确提交(了解即可) (07:56)
7-16 [怎样正确提交Spark应用] 利用SparkLauncher在代码中提交spark应用 (10:19)
7-17 [怎样正确提交Spark应用] spark脚本系统 (11:30)
7-18 [怎样正确提交Spark应用] spark-class脚本原理以及实现 (13:09)
7-19 [怎样正确提交Spark应用] spark-daemon脚本原理以及实现 (10:26)
7-20 [怎样正确提交Spark应用] SparkSubmit原理以及源码分析 (20:27)
8-1 [Schedulers On Driver] 课程内容 (14:59)
8-2 [Schedulers On Driver] stage的划分(必须学习) (16:37)
8-3 [Schedulers On Driver] stage的调度(必须学习) (13:23)
8-4 [Schedulers On Driver] taskset调度的先进先出(FIFO)机制(必须学习) (11:45)
8-5 [Schedulers On Driver] 实战:实现taskset调度的公平调度(FAIR)(必须学习 (18:47)
8-6 [Schedulers On Driver] taskset调度的公平调度(FAIR)机制需要注意的点 (08:58)
8-7 [Schedulers On Driver] task调度的本地性级别定义 (20:32)
8-8 [Schedulers On Driver] task调度的延迟调度讲解一 (21:01)
8-9 [Schedulers On Driver] task调度的延迟调度讲解二 (14:57)
8-10 [Schedulers On Driver] task调度的推测机制 (08:14)
8-11 [Schedulers On Driver] task调度的黑名单机制 (10:06)
8-12 [Schedulers On Driver] task调度的黑名单机制使用场景 (07:41)
8-13 [Schedulers On Driver] 一个Spark应用中的Job的数量 (07:04)
8-14 [Schedulers On Driver] 第二个Job的Stage的数量 (15:27)
8-15 [Schedulers On Driver] 默认情况下的Task的数量 (11:50)
8-16 [Schedulers On Driver] 分区调整场景一 (03:22)
8-17 [Schedulers On Driver] 分区调整场景二 (10:31)
8-18 [Schedulers On Driver] 分区调整场景三 (05:28)
8-19 [Schedulers On Driver] 分区调整场景四 (06:51)
8-20 [Schedulers On Driver] 总结RDD控制分区的方式 (05:36)
8-21 [Schedulers On Driver] executor资源的管理 (08:54)
8-22 [Schedulers On Driver] task的launch流程及其需要注意的点 (10:28)
8-23 [Schedulers On Driver] task的statusUpdate流程 (16:28)
8-24 [Schedulers On Driver] schedulers on driver的总体流程(必须学习 (06:08)
8-25 [Schedulers On Driver] 源码讲解之schedulers的初始化 (14:33)
8-26 [Schedulers On Driver] 源码讲解之job提交流程 (16:29)
8-27 [Schedulers On Driver] 源码讲解之task结果处理 (09:43)
8-28 [Schedulers On Driver] 动态资源分配机制(必须学习) (13:12)
8-29 [Schedulers On Driver] External shuffle service机制(必须掌 (08:59)
8-30 [Schedulers On Driver] 实操:开启External shuffle service机 (13:26)