對于一個具有相當(dāng)技術(shù)門檻與復(fù)雜度的平臺洼滚,Spark從誕生到正式版本的成熟瞒渠,經(jīng)歷的時間如此之短,讓人驚詫疑俭。2009年篙议,Spark誕生于伯克利大學(xué)AMPLab,于2010年正式開源怠硼,2013年成為了Apache基金項目,2014年成為Apache基金的較高級項目移怯,整個過程不到五年時間香璃。
2015年是Spark飛速發(fā)展的一年,Spark成為了現(xiàn)在大數(shù)據(jù)領(lǐng)域最火的開源軟件舟误,截止2015年葡秒,Spark的Contributor比2014年漲了3倍,達(dá)到730人嵌溢;總代碼行數(shù)也比2014年漲了2倍多眯牧,達(dá)到40萬行,不但大量的互聯(lián)網(wǎng)企業(yè)已經(jīng)在使用或者正準(zhǔn)備使用Spark赖草,而且大量的電信学少、金融、證券和傳統(tǒng)企業(yè)已經(jīng)開始引入了Spark秧骑。
學(xué)習(xí)它并掌握它版确,是大數(shù)據(jù)風(fēng)口下IT人的必備技能。本課程全程將通過以下內(nèi)容的實戰(zhàn)演練乎折,帶你玩轉(zhuǎn)Spark绒疗!
本課程將會結(jié)合精典案例講解Spark Job的整個生命周期,以及如何劃分Stage骂澄,如何生成邏輯執(zhí)行計劃和物理執(zhí)行計劃吓蘑。從Hash Shuffle到Sort Shuffle再到Tungsten Sort Shuffle詳細(xì)分析Spark Shuffle機(jī)制的原理與演進(jìn),同時結(jié)合Yarn分析Spark的內(nèi)存模型以及如何進(jìn)行相關(guān)調(diào)優(yōu)坟冲,其中兩節(jié)課主要介紹Spark Streaming使用方式磨镶,分析通用流式處理系統(tǒng)的關(guān)鍵問題以及Spark Streaming對相應(yīng)問題的解決方案溃蔫,如窗口,亂序棋嘲,Checkpoint等酒唉,并分析Spark Streaming與Storm和Kafka Stream各自的優(yōu)缺點和適用場景。
最后將結(jié)合源碼分析Spark SQL的原理沸移,以及實現(xiàn)SQL引擎的一般方法痪伦,介紹如何進(jìn)行Spark SQL性能優(yōu)化。并結(jié)合大量真實案例雹锣,分析如何解決數(shù)據(jù)傾斜問題從而提高應(yīng)用性能网沾。
課程大綱:
很多初學(xué)者,對大數(shù)據(jù)的概念都是模糊不清的蕊爵,大數(shù)據(jù)是什么辉哥,能做什么,學(xué)的時候攒射,該按照什么線路去學(xué)習(xí)醋旦,學(xué)完往哪方面發(fā)展,想深入了解会放,想學(xué)習(xí)的同學(xué)歡迎加入大數(shù)據(jù)學(xué)習(xí)企鵝群:458345782饲齐,有大量干貨(零基礎(chǔ)以及進(jìn)階的經(jīng)典實戰(zhàn))分享給大家,并且有清華大學(xué)畢業(yè)的資深大數(shù)據(jù)講師給大家免費(fèi)授課咧最,給大家分享目前國內(nèi)最完整的大數(shù)據(jù)高端實戰(zhàn)實用學(xué)習(xí)流程體系捂人。
第一課. Spark背景介紹與安裝部署
? ? ? ? ? ? ?1.1 Spark在大數(shù)據(jù)生態(tài)中的定位
? ? ? ? ? ? ?1.2 Spark主要模塊介紹
? ? ? ? ? ? ?1.3 Spark部署模型介紹
? ? ? ? ? ? ?1.4 Spark基于Ambari的安裝
? ? ? ? ? ? ?1.5 Spark Standalone下的HA
第二課. 基于Java的Spark編程入門
? ? ? ? ? ? ?2.1 Spark應(yīng)用中的術(shù)語介紹
? ? ? ? ? ? ?2.2 交互式工具spark-shell
? ? ? ? ? ? ?2.3 從Word Count看Spark編程
? ? ? ? ? ? ?2.4 spark-submit的幾種用法
第三課 Spark常用算子介紹
? ? ? ? ? ? ?3.1 transform與action
? ? ? ? ? ? ?3.2 廣播變量與累加器
? ? ? ? ? ? ?3.3 persist與checkpoint
? ? ? ? ? ? ?3.4 數(shù)據(jù)本地性(Data locality)
第四課. 一個Spark應(yīng)用的一生
? ? ? ? ? ? ?4.1 Spark應(yīng)用的Stage劃分
? ? ? ? ? ? ?4.2 窄依賴 vs. Shuffle依賴
? ? ? ? ? ? ?4.3 Job邏輯執(zhí)行計劃
? ? ? ? ? ? ?4.4 Job物理執(zhí)行計劃
第五課. Shuffle機(jī)制變遷
? ? ? ? ? ? ?5.1 Hadoop Shuffle方案
? ? ? ? ? ? ?5.2 Spark Hash Shuffle
? ? ? ? ? ? ?5.3 Spark Sort Shuffle
? ? ? ? ? ? ?5.4 Spark Tungsten Sort Shuffle
第六課. Spark SQL實戰(zhàn)
? ? ? ? ? ? ?6.1 Spark SQL前世今生
? ? ? ? ? ? ?6.2 RDD vs. Dataframe vs. Dataset
? ? ? ? ? ? ?6.3 使用外部數(shù)據(jù)源
? ? ? ? ? ? ?6.4 連接metastore
? ? ? ? ? ? ?6.5 自定義函數(shù)
? ? ? ? ? ? ?6.6 spark-sql與Spark thrift server
第七課. Spark SQL原理
? ? ? ? ? ? ?7.1 Spark SQL執(zhí)行過程解析
? ? ? ? ? ? ?7.2 Catalyst原理
? ? ? ? ? ? ?7.3 SQL引擎原理
? ? ? ? ? ? ?7.4 Spark SQL優(yōu)化
第八課. 例講數(shù)據(jù)傾斜解決方案
? ? ? ? ? ? ?8.1 為何需要處理數(shù)據(jù)傾斜
? ? ? ? ? ? ?8.2 調(diào)整并行度,分散同一Task的不同Key
? ? ? ? ? ? ?8.3 自定義Partitioner矢沿,分散同一Task的不同Key
? ? ? ? ? ? ?8.4 Map Join代替Reduce Join消除數(shù)據(jù)傾斜
? ? ? ? ? ? ?8.5 為傾斜key增加隨機(jī)前綴
? ? ? ? ? ? ?8.6 大表增加隨機(jī)前綴滥搭,小表擴(kuò)容
第九課. Spark Streaming上
? ? ? ? ? ? ?9.1 Spark Streaming示例
? ? ? ? ? ? ?9.2 流式系統(tǒng)關(guān)鍵問題分析
? ? ? ? ? ? ?9.3 Window操作
? ? ? ? ? ? ?9.4 如何在流數(shù)據(jù)上做Join
? ? ? ? ? ? ?9.5 Checkpoint機(jī)制
第十課. Spark Streaming下
? ? ? ? ? ? ?10.1 如何處理數(shù)據(jù)亂序問題
? ? ? ? ? ? ?10.2 Spark Streaming容錯機(jī)制
? ? ? ? ? ? ?10.3 Spark與Kafka實現(xiàn)Exactly once
? ? ? ? ? ? ?10.4 Spark Streaming vs. Storm vs. Kafka Stream
? ? ? ? ? ? ?10.5 Spark Streaming性能優(yōu)化
? ? ? ? ? ? ?10.6 Structured Streaming
第十一課. Spark MLlib
? ? ? ? ? ? ?11.1 Pipeline
? ? ? ? ? ? ?11.2 特征工程
? ? ? ? ? ? ?11.3 模型選擇
? ? ? ? ? ? ?11.4 調(diào)優(yōu)
第十二課. Spark優(yōu)化
? ? ? ? ? ? ?12.1 應(yīng)用代碼優(yōu)化
? ? ? ? ? ? ?12.2 Spark統(tǒng)一內(nèi)存模型
? ? ? ? ? ? ?12.3 基于YARN的參數(shù)優(yōu)化
? ? ? ? ? ? ?12.4 其它優(yōu)化項
授課時間:
課程預(yù)計2017年10月26日開課,預(yù)計課程持續(xù)時間為14周
授課對象:
Java開發(fā)轉(zhuǎn)大數(shù)據(jù)開發(fā)
具有一定Hadoop或其它分布式應(yīng)用基礎(chǔ)捣鲸,轉(zhuǎn)Spark開發(fā)
希望在Spark開發(fā)和原理上有所提升的大數(shù)據(jù)開發(fā)人員?
課程環(huán)境:
Spark 2.1瑟匆、Hadoop 2.7.3+
收獲預(yù)期:
1. 掌握Spark核心原理,包括但不限于Spark Job的執(zhí)行過程栽惶,Shuffle機(jī)制
2. 了解如何對Spark Job進(jìn)行性能優(yōu)化脓诡,包括但不限于參數(shù)調(diào)優(yōu),數(shù)據(jù)傾斜優(yōu)化媒役,應(yīng)用代碼調(diào)優(yōu)
3. 掌握Spark Streaming的原理及使用方式祝谚,并掌握如何結(jié)合Spark Streaming和Kafka實現(xiàn)正好一次處理語義
4. 了解流式處理系統(tǒng)的常見問題和解決方案?