課程簡介
深入剖析Spark大數(shù)據(jù)實戰(zhàn)技術(shù)與內(nèi)核原理。課程涵蓋Spark技術(shù)脈絡(luò)、基礎(chǔ)編程、分布式計算原理、進階使用及Spark Streaming、Spark SQL等核心應(yīng)用,幫助學員掌握Spark分布式處理海量數(shù)據(jù)的能力,打造高效的大數(shù)據(jù)處理流程。
目標收益
掌握核心技術(shù):通過系統(tǒng)學習Spark,學員將能夠熟練運用Spark處理大數(shù)據(jù),提升工作效率。
深入理解原理:深入剖析Spark內(nèi)核原理,理解其分布式計算機制,為復(fù)雜數(shù)據(jù)處理提供堅實理論基礎(chǔ)。
實戰(zhàn)應(yīng)用導(dǎo)向:通過實戰(zhàn)案例,學員將學會如何將Spark技術(shù)應(yīng)用于實際場景,提升數(shù)據(jù)處理能力,為企業(yè)創(chuàng)造價值。
培訓對象
課程大綱
第1天大數(shù)據(jù)技術(shù)脈絡(luò)與Spark入門 序言: 大數(shù)據(jù)技術(shù)發(fā)展脈絡(luò) |
1.大數(shù)據(jù)技術(shù)圖譜: 采集、傳輸、存儲、調(diào)度、計算 2. 分布式的3個領(lǐng)域: (1) 分布式存儲:TFS/GFS/HDFS/Ceph/… (2) 分布式調(diào)度:Yarn/K8S (3) 分布式計算: 批處理、流處理、OLAP、 ML 3. 各種分布式計算框架: Spark/Flink/各種OLAP框架/ML框架 |
第1單元 hadoop核心原理與Spark環(huán)境部署 |
1.Spark單機模式 2.Spark集群模式 3.Spark on Yarn模式 (1)HDFS集群部署、HDFS核心概念解析、HDFS高可用 (2) Yarn集群部署、Yarn核心概念解析、Yarn高可用 (3)存算分離架構(gòu) vs. 存算不分架構(gòu) (4)Spark on Yarn部署 4.Spark任務(wù)提交 5.Spark on K8S模式 |
第2單元: Spark基礎(chǔ):Scala語言 |
1.Scala與Java的聯(lián)系與區(qū)別 2.函數(shù)式編程 vs. 面向?qū)ο缶幊?br/>3.函數(shù)的各種特別寫法 4.Scala面向?qū)ο笈cJava的差異點 5.類型、泛型、反射 6.Scala特有的一些設(shè)計模式:self-type/cake-pattern, Product等 |
第3單元 基于RDD的spark編程 |
1.RDD的用法、設(shè)計理念剖析 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任務(wù)的資源分配:精通分配 vs. 動態(tài)分配 |
第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典型應(yīng)用場景: Spark消費Kafka舉例 2.Spark Streaming: 無狀態(tài)應(yīng)用 vs. 有狀態(tài)應(yīng)用 3.Spark Streaming vs. Flink Spark Streaming和Flink的優(yōu)缺點對比 4.Spark Streaming原理 5.綜合案例實戰(zhàn): 案例1: kafka數(shù)據(jù)落入hdfs,各種實現(xiàn)方法分析 |
第2單元: Spark SQL編程 |
1. Spark SQL vs. RDD 2. 基于DataFrame編程 (1)DataFrame背后的設(shè)計理念 (2)基于DataFrame的各種算子 3. 低階算子 vs. 高階算子 4. 從Spark到Flink: Streaming SQL引入 5.Spark structure programming: spark streaming SQL |
第3單元 Spark SQL背后的原理 |
1.SQL語句如何轉(zhuǎn)化為AST語法樹?- Antlr框架介紹 2.AST如何轉(zhuǎn)化為邏輯計劃? 謂詞下推、列裁剪 3.邏輯計劃如何轉(zhuǎn)化為物理計劃? 4.物理計劃轉(zhuǎn)化為RDD? |
第4單元 SQL UDF編程與背后原理 |
1.為什么要用UDF? 2.常規(guī)UDF寫法 3.基于Expression的UDF實現(xiàn) |
第3天 Spark常用優(yōu)化技巧與內(nèi)核剖析 第1單元 常用優(yōu)化技巧 |
1.Spark調(diào)優(yōu)的基本框架 2.看懂Spark Web UI與history UI的各種參數(shù) 3.常用優(yōu)化技巧介紹: (1)rdd復(fù)用 (2)謹慎使用shuffle算子 (3)合理配置spark任務(wù)參數(shù) |
第2單元 優(yōu)化專題1 - Spark SQL Join的幾種不同實現(xiàn)方式與選擇 |
1.Join的幾種不同實現(xiàn)算法: (1)單機3種Join算法: Nested Loop Join Sorted Merge Join Hash Join (2)分布式Join的2個策略 Shuffle BroadCast 2.join hints – 選擇不同的Join算法 |
第3單元 優(yōu)化專題2 – 數(shù)據(jù)傾斜 |
1.為什么會有數(shù)據(jù)傾斜? 2.數(shù)據(jù)傾斜的幾種不同優(yōu)化方法: (1)預(yù)計算 (2)提高并行度 (3)隨機前綴打散 (4)小表廣播 |
第4單元 Spark RDD內(nèi)核剖析 |
1.源代碼如何構(gòu)建DAG圖? 2.DAGScheduler內(nèi)核剖析 – DAGScheduler如何調(diào)度執(zhí)行DAG? 3.TaskScheduler內(nèi)核剖析 – TaskScheduler如何調(diào)度Task? 4.Executor內(nèi)核剖析 – Executor如何執(zhí)行Task? |
第5單元 Spark sql內(nèi)核剖析 |
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.從線性回歸到邏輯回歸: 交叉熵損失函數(shù)、梯度下降法 3.凸優(yōu)化:梯度下降的直觀解讀 4.機器學習算法框架總結(jié): (1)定義模型 (2)定義損失函數(shù) (3)損失函數(shù)最小化 |
第2單元 常用機器學習算法2 - 決策樹深入剖析 |
1.決策樹算法的基本思維 2.數(shù)據(jù)純度的表達 – 方差、信息熵、Gini系數(shù) 3.ID3、C4.5、Cart 4.專題討論:離散值劃分問題 5.決策樹的損失函數(shù)解讀 |
第3單元 常用機器學習算法3 – 集成樹 - 深入剖析 |
1.Bagging 與 Boosting 2.高數(shù)基礎(chǔ):復(fù)合函數(shù)求導(dǎo) 3.GBDT算法介紹 4.XGB算法介紹 5.lightGBM算法介紹 |
第4單元 Spark ML |
1.Spark ML - LR例子 2.Spark ML - XGB例子 3.Spark ML – lightGBM例子 |
第1天大數(shù)據(jù)技術(shù)脈絡(luò)與Spark入門 序言: 大數(shù)據(jù)技術(shù)發(fā)展脈絡(luò) 1.大數(shù)據(jù)技術(shù)圖譜: 采集、傳輸、存儲、調(diào)度、計算 2. 分布式的3個領(lǐng)域: (1) 分布式存儲:TFS/GFS/HDFS/Ceph/… (2) 分布式調(diào)度:Yarn/K8S (3) 分布式計算: 批處理、流處理、OLAP、 ML 3. 各種分布式計算框架: Spark/Flink/各種OLAP框架/ML框架 |
第1單元 hadoop核心原理與Spark環(huán)境部署 1.Spark單機模式 2.Spark集群模式 3.Spark on Yarn模式 (1)HDFS集群部署、HDFS核心概念解析、HDFS高可用 (2) Yarn集群部署、Yarn核心概念解析、Yarn高可用 (3)存算分離架構(gòu) vs. 存算不分架構(gòu) (4)Spark on Yarn部署 4.Spark任務(wù)提交 5.Spark on K8S模式 |
第2單元: Spark基礎(chǔ):Scala語言 1.Scala與Java的聯(lián)系與區(qū)別 2.函數(shù)式編程 vs. 面向?qū)ο缶幊?br/>3.函數(shù)的各種特別寫法 4.Scala面向?qū)ο笈cJava的差異點 5.類型、泛型、反射 6.Scala特有的一些設(shè)計模式:self-type/cake-pattern, Product等 |
第3單元 基于RDD的spark編程 1.RDD的用法、設(shè)計理念剖析 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任務(wù)的資源分配:精通分配 vs. 動態(tài)分配 |
第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典型應(yīng)用場景: Spark消費Kafka舉例 2.Spark Streaming: 無狀態(tài)應(yīng)用 vs. 有狀態(tài)應(yīng)用 3.Spark Streaming vs. Flink Spark Streaming和Flink的優(yōu)缺點對比 4.Spark Streaming原理 5.綜合案例實戰(zhàn): 案例1: kafka數(shù)據(jù)落入hdfs,各種實現(xiàn)方法分析 |
第2單元: Spark SQL編程 1. Spark SQL vs. RDD 2. 基于DataFrame編程 (1)DataFrame背后的設(shè)計理念 (2)基于DataFrame的各種算子 3. 低階算子 vs. 高階算子 4. 從Spark到Flink: Streaming SQL引入 5.Spark structure programming: spark streaming SQL |
第3單元 Spark SQL背后的原理 1.SQL語句如何轉(zhuǎn)化為AST語法樹?- Antlr框架介紹 2.AST如何轉(zhuǎn)化為邏輯計劃? 謂詞下推、列裁剪 3.邏輯計劃如何轉(zhuǎn)化為物理計劃? 4.物理計劃轉(zhuǎn)化為RDD? |
第4單元 SQL UDF編程與背后原理 1.為什么要用UDF? 2.常規(guī)UDF寫法 3.基于Expression的UDF實現(xiàn) |
第3天 Spark常用優(yōu)化技巧與內(nèi)核剖析 第1單元 常用優(yōu)化技巧 1.Spark調(diào)優(yōu)的基本框架 2.看懂Spark Web UI與history UI的各種參數(shù) 3.常用優(yōu)化技巧介紹: (1)rdd復(fù)用 (2)謹慎使用shuffle算子 (3)合理配置spark任務(wù)參數(shù) |
第2單元 優(yōu)化專題1 - Spark SQL Join的幾種不同實現(xiàn)方式與選擇 1.Join的幾種不同實現(xiàn)算法: (1)單機3種Join算法: Nested Loop Join Sorted Merge Join Hash Join (2)分布式Join的2個策略 Shuffle BroadCast 2.join hints – 選擇不同的Join算法 |
第3單元 優(yōu)化專題2 – 數(shù)據(jù)傾斜 1.為什么會有數(shù)據(jù)傾斜? 2.數(shù)據(jù)傾斜的幾種不同優(yōu)化方法: (1)預(yù)計算 (2)提高并行度 (3)隨機前綴打散 (4)小表廣播 |
第4單元 Spark RDD內(nèi)核剖析 1.源代碼如何構(gòu)建DAG圖? 2.DAGScheduler內(nèi)核剖析 – DAGScheduler如何調(diào)度執(zhí)行DAG? 3.TaskScheduler內(nèi)核剖析 – TaskScheduler如何調(diào)度Task? 4.Executor內(nèi)核剖析 – Executor如何執(zhí)行Task? |
第5單元 Spark sql內(nèi)核剖析 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.從線性回歸到邏輯回歸: 交叉熵損失函數(shù)、梯度下降法 3.凸優(yōu)化:梯度下降的直觀解讀 4.機器學習算法框架總結(jié): (1)定義模型 (2)定義損失函數(shù) (3)損失函數(shù)最小化 |
第2單元 常用機器學習算法2 - 決策樹深入剖析 1.決策樹算法的基本思維 2.數(shù)據(jù)純度的表達 – 方差、信息熵、Gini系數(shù) 3.ID3、C4.5、Cart 4.專題討論:離散值劃分問題 5.決策樹的損失函數(shù)解讀 |
第3單元 常用機器學習算法3 – 集成樹 - 深入剖析 1.Bagging 與 Boosting 2.高數(shù)基礎(chǔ):復(fù)合函數(shù)求導(dǎo) 3.GBDT算法介紹 4.XGB算法介紹 5.lightGBM算法介紹 |
第4單元 Spark ML 1.Spark ML - LR例子 2.Spark ML - XGB例子 3.Spark ML – lightGBM例子 |