课程简介
深入剖析Spark大数据实战技术与内核原理。课程涵盖Spark技术脉络、基础编程、分布式计算原理、进阶使用及Spark Streaming、Spark SQL等核心应用,帮助学员掌握Spark分布式处理海量数据的能力,打造高效的大数据处理流程。
目标收益
掌握核心技术:通过系统学习Spark,学员将能够熟练运用Spark处理大数据,提升工作效率。
深入理解原理:深入剖析Spark内核原理,理解其分布式计算机制,为复杂数据处理提供坚实理论基础。
实战应用导向:通过实战案例,学员将学会如何将Spark技术应用于实际场景,提升数据处理能力,为企业创造价值。
培训对象
课程大纲
第1天大数据技术脉络与Spark入门 序言: 大数据技术发展脉络 |
1.大数据技术图谱: 采集、传输、存储、调度、计算 2. 分布式的3个领域: (1) 分布式存储:TFS/GFS/HDFS/Ceph/… (2) 分布式调度:Yarn/K8S (3) 分布式计算: 批处理、流处理、OLAP、 ML 3. 各种分布式计算框架: Spark/Flink/各种OLAP框架/ML框架 |
第1单元 hadoop核心原理与Spark环境部署 |
1.Spark单机模式 2.Spark集群模式 3.Spark on Yarn模式 (1)HDFS集群部署、HDFS核心概念解析、HDFS高可用 (2) Yarn集群部署、Yarn核心概念解析、Yarn高可用 (3)存算分离架构 vs. 存算不分架构 (4)Spark on Yarn部署 4.Spark任务提交 5.Spark on K8S模式 |
第2单元: Spark基础:Scala语言 |
1.Scala与Java的联系与区别 2.函数式编程 vs. 面向对象编程 3.函数的各种特别写法 4.Scala面向对象与Java的差异点 5.类型、泛型、反射 6.Scala特有的一些设计模式:self-type/cake-pattern, Product等 |
第3单元 基于RDD的spark编程 |
1.RDD的用法、设计理念剖析 2.Transformation与Action算子 3.Transromation算子:1元、2元、多元算子 4.常用算子剖析:map/flatmap/filter/reduceByKey/groupByKey/reduce/repartition/coalesce/.. 5.读/写hdfs文件 |
第4单元 RDD背后的分布式计算原理剖析 |
1.Spark App源代码如何拆分成多个Job?Job之间串行、并行? 2.Job如何拆分成多个Stage? Stage之间串行、并行? 3.Stage如何拆分成多个Task?Task之间串行、并行? 4.物理并行度 vs. 逻辑并行度 5.Spark任务的资源分配:精通分配 vs. 动态分配 |
第5单元 Spark 进阶使用 |
1.RDD容错机制: cache与persist 2.RDD checkpoint 3.spark broadcast机制 4.spark accumulator机制 |
第2天 Spark Streaming、Spark SQL与DataFrame编程 第1单元 Spark Streaming入门 |
1.Spark Streaming典型应用场景: Spark消费Kafka举例 2.Spark Streaming: 无状态应用 vs. 有状态应用 3.Spark Streaming vs. Flink Spark Streaming和Flink的优缺点对比 4.Spark Streaming原理 5.综合案例实战: 案例1: kafka数据落入hdfs,各种实现方法分析 |
第2单元: Spark SQL编程 |
1. Spark SQL vs. RDD 2. 基于DataFrame编程 (1)DataFrame背后的设计理念 (2)基于DataFrame的各种算子 3. 低阶算子 vs. 高阶算子 4. 从Spark到Flink: Streaming SQL引入 5.Spark structure programming: spark streaming SQL |
第3单元 Spark SQL背后的原理 |
1.SQL语句如何转化为AST语法树?- Antlr框架介绍 2.AST如何转化为逻辑计划? 谓词下推、列裁剪 3.逻辑计划如何转化为物理计划? 4.物理计划转化为RDD? |
第4单元 SQL UDF编程与背后原理 |
1.为什么要用UDF? 2.常规UDF写法 3.基于Expression的UDF实现 |
第3天 Spark常用优化技巧与内核剖析 第1单元 常用优化技巧 |
1.Spark调优的基本框架 2.看懂Spark Web UI与history UI的各种参数 3.常用优化技巧介绍: (1)rdd复用 (2)谨慎使用shuffle算子 (3)合理配置spark任务参数 |
第2单元 优化专题1 - Spark SQL Join的几种不同实现方式与选择 |
1.Join的几种不同实现算法: (1)单机3种Join算法: Nested Loop Join Sorted Merge Join Hash Join (2)分布式Join的2个策略 Shuffle BroadCast 2.join hints – 选择不同的Join算法 |
第3单元 优化专题2 – 数据倾斜 |
1.为什么会有数据倾斜? 2.数据倾斜的几种不同优化方法: (1)预计算 (2)提高并行度 (3)随机前缀打散 (4)小表广播 |
第4单元 Spark RDD内核剖析 |
1.源代码如何构建DAG图? 2.DAGScheduler内核剖析 – DAGScheduler如何调度执行DAG? 3.TaskScheduler内核剖析 – TaskScheduler如何调度Task? 4.Executor内核剖析 – Executor如何执行Task? |
第5单元 Spark sql内核剖析 |
1.sql如何变成AST语法树? 2.语法树变成逻辑计划? 3.逻辑计划变成物理计划? 4.物理计划变成RDD DAG图? 5.AQE 与 DPP 6.Tungsten – WSCG与向量化 |
第4天 机器学习与Spark ML 序言:从机器学习到深度学习 |
1.机器学习 vs. 深度学习 2.常用ML/深度学习库:sklearn/SparkML/tensorflow/pytorch |
第1单元 常用机器学习算法1 – LR深入剖析 |
1.线性回归、最小2乘 2.从线性回归到逻辑回归: 交叉熵损失函数、梯度下降法 3.凸优化:梯度下降的直观解读 4.机器学习算法框架总结: (1)定义模型 (2)定义损失函数 (3)损失函数最小化 |
第2单元 常用机器学习算法2 - 决策树深入剖析 |
1.决策树算法的基本思维 2.数据纯度的表达 – 方差、信息熵、Gini系数 3.ID3、C4.5、Cart 4.专题讨论:离散值划分问题 5.决策树的损失函数解读 |
第3单元 常用机器学习算法3 – 集成树 - 深入剖析 |
1.Bagging 与 Boosting 2.高数基础:复合函数求导 3.GBDT算法介绍 4.XGB算法介绍 5.lightGBM算法介绍 |
第4单元 Spark ML |
1.Spark ML - LR例子 2.Spark ML - XGB例子 3.Spark ML – lightGBM例子 |
第1天大数据技术脉络与Spark入门 序言: 大数据技术发展脉络 1.大数据技术图谱: 采集、传输、存储、调度、计算 2. 分布式的3个领域: (1) 分布式存储:TFS/GFS/HDFS/Ceph/… (2) 分布式调度:Yarn/K8S (3) 分布式计算: 批处理、流处理、OLAP、 ML 3. 各种分布式计算框架: Spark/Flink/各种OLAP框架/ML框架 |
第1单元 hadoop核心原理与Spark环境部署 1.Spark单机模式 2.Spark集群模式 3.Spark on Yarn模式 (1)HDFS集群部署、HDFS核心概念解析、HDFS高可用 (2) Yarn集群部署、Yarn核心概念解析、Yarn高可用 (3)存算分离架构 vs. 存算不分架构 (4)Spark on Yarn部署 4.Spark任务提交 5.Spark on K8S模式 |
第2单元: Spark基础:Scala语言 1.Scala与Java的联系与区别 2.函数式编程 vs. 面向对象编程 3.函数的各种特别写法 4.Scala面向对象与Java的差异点 5.类型、泛型、反射 6.Scala特有的一些设计模式:self-type/cake-pattern, Product等 |
第3单元 基于RDD的spark编程 1.RDD的用法、设计理念剖析 2.Transformation与Action算子 3.Transromation算子:1元、2元、多元算子 4.常用算子剖析:map/flatmap/filter/reduceByKey/groupByKey/reduce/repartition/coalesce/.. 5.读/写hdfs文件 |
第4单元 RDD背后的分布式计算原理剖析 1.Spark App源代码如何拆分成多个Job?Job之间串行、并行? 2.Job如何拆分成多个Stage? Stage之间串行、并行? 3.Stage如何拆分成多个Task?Task之间串行、并行? 4.物理并行度 vs. 逻辑并行度 5.Spark任务的资源分配:精通分配 vs. 动态分配 |
第5单元 Spark 进阶使用 1.RDD容错机制: cache与persist 2.RDD checkpoint 3.spark broadcast机制 4.spark accumulator机制 |
第2天 Spark Streaming、Spark SQL与DataFrame编程 第1单元 Spark Streaming入门 1.Spark Streaming典型应用场景: Spark消费Kafka举例 2.Spark Streaming: 无状态应用 vs. 有状态应用 3.Spark Streaming vs. Flink Spark Streaming和Flink的优缺点对比 4.Spark Streaming原理 5.综合案例实战: 案例1: kafka数据落入hdfs,各种实现方法分析 |
第2单元: Spark SQL编程 1. Spark SQL vs. RDD 2. 基于DataFrame编程 (1)DataFrame背后的设计理念 (2)基于DataFrame的各种算子 3. 低阶算子 vs. 高阶算子 4. 从Spark到Flink: Streaming SQL引入 5.Spark structure programming: spark streaming SQL |
第3单元 Spark SQL背后的原理 1.SQL语句如何转化为AST语法树?- Antlr框架介绍 2.AST如何转化为逻辑计划? 谓词下推、列裁剪 3.逻辑计划如何转化为物理计划? 4.物理计划转化为RDD? |
第4单元 SQL UDF编程与背后原理 1.为什么要用UDF? 2.常规UDF写法 3.基于Expression的UDF实现 |
第3天 Spark常用优化技巧与内核剖析 第1单元 常用优化技巧 1.Spark调优的基本框架 2.看懂Spark Web UI与history UI的各种参数 3.常用优化技巧介绍: (1)rdd复用 (2)谨慎使用shuffle算子 (3)合理配置spark任务参数 |
第2单元 优化专题1 - Spark SQL Join的几种不同实现方式与选择 1.Join的几种不同实现算法: (1)单机3种Join算法: Nested Loop Join Sorted Merge Join Hash Join (2)分布式Join的2个策略 Shuffle BroadCast 2.join hints – 选择不同的Join算法 |
第3单元 优化专题2 – 数据倾斜 1.为什么会有数据倾斜? 2.数据倾斜的几种不同优化方法: (1)预计算 (2)提高并行度 (3)随机前缀打散 (4)小表广播 |
第4单元 Spark RDD内核剖析 1.源代码如何构建DAG图? 2.DAGScheduler内核剖析 – DAGScheduler如何调度执行DAG? 3.TaskScheduler内核剖析 – TaskScheduler如何调度Task? 4.Executor内核剖析 – Executor如何执行Task? |
第5单元 Spark sql内核剖析 1.sql如何变成AST语法树? 2.语法树变成逻辑计划? 3.逻辑计划变成物理计划? 4.物理计划变成RDD DAG图? 5.AQE 与 DPP 6.Tungsten – WSCG与向量化 |
第4天 机器学习与Spark ML 序言:从机器学习到深度学习 1.机器学习 vs. 深度学习 2.常用ML/深度学习库:sklearn/SparkML/tensorflow/pytorch |
第1单元 常用机器学习算法1 – LR深入剖析 1.线性回归、最小2乘 2.从线性回归到逻辑回归: 交叉熵损失函数、梯度下降法 3.凸优化:梯度下降的直观解读 4.机器学习算法框架总结: (1)定义模型 (2)定义损失函数 (3)损失函数最小化 |
第2单元 常用机器学习算法2 - 决策树深入剖析 1.决策树算法的基本思维 2.数据纯度的表达 – 方差、信息熵、Gini系数 3.ID3、C4.5、Cart 4.专题讨论:离散值划分问题 5.决策树的损失函数解读 |
第3单元 常用机器学习算法3 – 集成树 - 深入剖析 1.Bagging 与 Boosting 2.高数基础:复合函数求导 3.GBDT算法介绍 4.XGB算法介绍 5.lightGBM算法介绍 |
第4单元 Spark ML 1.Spark ML - LR例子 2.Spark ML - XGB例子 3.Spark ML – lightGBM例子 |