課程簡(jiǎn)介
a) 鑒于一般Spark不會(huì)單獨(dú)使用,而是與Hadoop一起使用,因此該課程首先簡(jiǎn)單闡述HDFS與Yarn的關(guān)鍵技術(shù)與高可用及水平擴(kuò)展方案
b) 結(jié)合精典案例講解一個(gè)Spark Job的整個(gè)生命周期,以及如何劃分Stage,如何生成邏輯執(zhí)行計(jì)劃和物理執(zhí)行計(jì)劃
c) 從Hash Shuffle到Sort Shuffle再到Tungsten Sort Shuffle詳細(xì)分析Spark Shuffle機(jī)制的原理與演進(jìn)
d) 結(jié)合Yarn分析Spark的內(nèi)存模型以及如何進(jìn)行相關(guān)調(diào)優(yōu)
e) 介紹Spark Streaming使用方式,分析通用流式處理系統(tǒng)的關(guān)鍵問(wèn)題以及Spark Streaming對(duì)相應(yīng)問(wèn)題的解決方案,如窗口,亂序,Checkpoint等,并分析Spark Streaming與Storm和Kafka Stream各自的優(yōu)缺點(diǎn)和適用場(chǎng)景
f) 結(jié)合源碼分析Spark SQL的原理,以及實(shí)現(xiàn)SQL引擎的一般方法,并介紹如何進(jìn)行Spark SQL性能優(yōu)化
g) 結(jié)合電影推薦系統(tǒng)這一案例,介紹如何使用Spark MLlib解決機(jī)器學(xué)習(xí)問(wèn)題
h) 結(jié)合大量真實(shí)案例,分析如何解決數(shù)據(jù)傾斜問(wèn)題從而提高應(yīng)用性能
目標(biāo)收益
a) 熟悉HDFS與Yarn實(shí)現(xiàn)原理及最佳實(shí)踐
b) 掌握Spark核心原理,包括但不限于Spark Job的執(zhí)行過(guò)程,Shuffle機(jī)制
c) 了解如何對(duì)Spark Job進(jìn)行性能優(yōu)化,包括但不限于參數(shù)調(diào)優(yōu),數(shù)據(jù)傾斜優(yōu)化,代碼調(diào)優(yōu)
d) 掌握Spark Streaming的原理及使用方式,并掌握如何結(jié)合Spark Streaming和Kafka實(shí)現(xiàn)正好一次處理語(yǔ)義
e) 掌握Spark SQL的使用和優(yōu)化方式,了解SQL引擎的原理
f) 掌握使用Spark MLlib解決機(jī)器學(xué)習(xí)問(wèn)題的一般方法
培訓(xùn)對(duì)象
a) 大數(shù)據(jù)產(chǎn)品開(kāi)發(fā)工程師
b) 大數(shù)據(jù)運(yùn)維工程師
c) 大數(shù)據(jù)架構(gòu)師
課程大綱
大數(shù)據(jù)系統(tǒng)的基礎(chǔ)Zookeeper |
1.1 Zookeeper原理 1.2 集群配置管理 1.3 服務(wù)發(fā)現(xiàn) 1.4 基于Zookeeper的領(lǐng)導(dǎo)選舉 1.5 分布式鎖 |
HDFS原理 |
2.1 HDFS架構(gòu) 2.2 HDFS讀寫(xiě)過(guò)程及優(yōu)化 2.3 MR與Spark使用HDFS最佳實(shí)踐 2.4 Name node高可用方案 2.5 Name node水平擴(kuò)展方案 |
Yarn原理 |
3.1 Yarn架構(gòu)分析 3.2 資源分配與隔離 3.3 資源調(diào)度與調(diào)優(yōu) 3.4 基于標(biāo)簽的資源分配 3.5 Resource Manager高可用方案 |
Spark核心原理 |
4.1 Spark架構(gòu) 4.2 Job邏輯執(zhí)行計(jì)劃 4.3 Job物理執(zhí)行計(jì)劃 4.4 Spark transform與action 4.5 Spark Job的一生 |
Spark Shuffle機(jī)制演進(jìn) |
5.1 Hadoop Shuffle 5.2 Hash Shuffle 5.3 Sort Shuffle 5.4 Tungsten Sort Shuffle |
Spark內(nèi)存模型與調(diào)優(yōu) |
6.1 內(nèi)存分配 6.2 堆外內(nèi)存使用 6.3 Spark on Yarn內(nèi)存分配最佳實(shí)踐 |
Spark數(shù)據(jù)結(jié)構(gòu)原理 |
7.1 RDD優(yōu)劣勢(shì) 7.2 DataFrame與Dataset 7.3 廣播變量實(shí)現(xiàn)原理 7.4 累加器 |
Spark Streaming |
8.1 例講Spark Streaming 8.2 流式系統(tǒng)關(guān)鍵問(wèn)題分析 8.3 Window操作 8.4 如何在流數(shù)據(jù)上做Join 8.5 Checkpoint機(jī)制 8.6 如何處理數(shù)據(jù)亂序問(wèn)題 8.7 Spark Streaming容錯(cuò)機(jī)制 8.8 Spark與Kafka實(shí)現(xiàn)Exactly once 8.9 Spark Streaming vs. Storm vs. Kafka Stream 8.10 Spark Streaming性能優(yōu)化 8.11 Structured Streaming |
Spark SQL |
9.1 Spark SQL前世今生 9.2 例講Spark SQL 9.3 Spark SQL數(shù)據(jù)源 9.4 Spark集成metastore 9.5 如何實(shí)現(xiàn)和使用自定義函數(shù)(UDF) 9.6 DataFrame vs. spark-sql vs. thrift server 9.7 Spark SQL實(shí)現(xiàn)原理(SQL引擎原理) 9.8 Spark SQL性能優(yōu)化 |
例講數(shù)據(jù)傾斜解決方案及案例 |
10.1 為何需要處理數(shù)據(jù)傾斜 10.2 調(diào)整并行度,分散同一Task的不同Key 10.3 自定義Partitioner,分散同一Task的不同Key 10.4 Map Join代替Reduce Join消除數(shù)據(jù)傾斜 10.5 為傾斜key增加隨機(jī)前綴 10.6 大表增加隨機(jī)前綴,小表擴(kuò)容 |
Spark MLlib原理與應(yīng)用 |
11.1 使用Spark MLlib開(kāi)發(fā)機(jī)器學(xué)習(xí)應(yīng)用的方法 11.2 Pipeline的使用方法 11.3 超參數(shù)調(diào)優(yōu) 11.4 如何開(kāi)發(fā)新的算法 11.5 如何使用Spark MLlib開(kāi)發(fā)電影推薦系統(tǒng) |
大數(shù)據(jù)系統(tǒng)的基礎(chǔ)Zookeeper 1.1 Zookeeper原理 1.2 集群配置管理 1.3 服務(wù)發(fā)現(xiàn) 1.4 基于Zookeeper的領(lǐng)導(dǎo)選舉 1.5 分布式鎖 |
HDFS原理 2.1 HDFS架構(gòu) 2.2 HDFS讀寫(xiě)過(guò)程及優(yōu)化 2.3 MR與Spark使用HDFS最佳實(shí)踐 2.4 Name node高可用方案 2.5 Name node水平擴(kuò)展方案 |
Yarn原理 3.1 Yarn架構(gòu)分析 3.2 資源分配與隔離 3.3 資源調(diào)度與調(diào)優(yōu) 3.4 基于標(biāo)簽的資源分配 3.5 Resource Manager高可用方案 |
Spark核心原理 4.1 Spark架構(gòu) 4.2 Job邏輯執(zhí)行計(jì)劃 4.3 Job物理執(zhí)行計(jì)劃 4.4 Spark transform與action 4.5 Spark Job的一生 |
Spark Shuffle機(jī)制演進(jìn) 5.1 Hadoop Shuffle 5.2 Hash Shuffle 5.3 Sort Shuffle 5.4 Tungsten Sort Shuffle |
Spark內(nèi)存模型與調(diào)優(yōu) 6.1 內(nèi)存分配 6.2 堆外內(nèi)存使用 6.3 Spark on Yarn內(nèi)存分配最佳實(shí)踐 |
Spark數(shù)據(jù)結(jié)構(gòu)原理 7.1 RDD優(yōu)劣勢(shì) 7.2 DataFrame與Dataset 7.3 廣播變量實(shí)現(xiàn)原理 7.4 累加器 |
Spark Streaming 8.1 例講Spark Streaming 8.2 流式系統(tǒng)關(guān)鍵問(wèn)題分析 8.3 Window操作 8.4 如何在流數(shù)據(jù)上做Join 8.5 Checkpoint機(jī)制 8.6 如何處理數(shù)據(jù)亂序問(wèn)題 8.7 Spark Streaming容錯(cuò)機(jī)制 8.8 Spark與Kafka實(shí)現(xiàn)Exactly once 8.9 Spark Streaming vs. Storm vs. Kafka Stream 8.10 Spark Streaming性能優(yōu)化 8.11 Structured Streaming |
Spark SQL 9.1 Spark SQL前世今生 9.2 例講Spark SQL 9.3 Spark SQL數(shù)據(jù)源 9.4 Spark集成metastore 9.5 如何實(shí)現(xiàn)和使用自定義函數(shù)(UDF) 9.6 DataFrame vs. spark-sql vs. thrift server 9.7 Spark SQL實(shí)現(xiàn)原理(SQL引擎原理) 9.8 Spark SQL性能優(yōu)化 |
例講數(shù)據(jù)傾斜解決方案及案例 10.1 為何需要處理數(shù)據(jù)傾斜 10.2 調(diào)整并行度,分散同一Task的不同Key 10.3 自定義Partitioner,分散同一Task的不同Key 10.4 Map Join代替Reduce Join消除數(shù)據(jù)傾斜 10.5 為傾斜key增加隨機(jī)前綴 10.6 大表增加隨機(jī)前綴,小表擴(kuò)容 |
Spark MLlib原理與應(yīng)用 11.1 使用Spark MLlib開(kāi)發(fā)機(jī)器學(xué)習(xí)應(yīng)用的方法 11.2 Pipeline的使用方法 11.3 超參數(shù)調(diào)優(yōu) 11.4 如何開(kāi)發(fā)新的算法 11.5 如何使用Spark MLlib開(kāi)發(fā)電影推薦系統(tǒng) |