1. 程式人生 > >Spark大資料平臺應用實戰

Spark大資料平臺應用實戰

對於一個具有相當技術門檻與複雜度的平臺,Spark從誕生到正式版本的成熟,經歷的時間如此之短,讓人驚詫。2009年,Spark誕生於伯克利大學AMPLab,於2010年正式開源,2013年成為了Apache基金專案,2014年成為Apache基金的較高階專案,整個過程不到五年時間。

2015年是Spark飛速發展的一年,Spark成為了現在大資料領域最火的開源軟體,截止2015年,Spark的Contributor比2014年漲了3倍,達到730人;總程式碼行數也比2014年漲了2倍多,達到40萬行,不但大量的網際網路企業已經在使用或者正準備使用Spark,而且大量的電信、金融、證券和傳統企業已經開始引入了Spark。

學習它並掌握它,是大資料風口下IT人的必備技能。本課程全程將通過以下內容的實戰演練,帶你玩轉Spark!

本課程將會結合精典案例講解Spark Job的整個生命週期,以及如何劃分Stage,如何生成邏輯執行計劃和物理執行計劃。從Hash Shuffle到Sort Shuffle再到Tungsten Sort Shuffle詳細分析Spark Shuffle機制的原理與演進,同時結合Yarn分析Spark的記憶體模型以及如何進行相關調優,其中兩節課主要介紹Spark Streaming使用方式,分析通用流式處理系統的關鍵問題以及Spark Streaming對相應問題的解決方案,如視窗,亂序,Checkpoint等,並分析Spark Streaming與Storm和Kafka Stream各自的優缺點和適用場景。

最後將結合原始碼分析Spark SQL的原理,以及實現SQL引擎的一般方法,介紹如何進行Spark SQL效能優化。並結合大量真實案例,分析如何解決資料傾斜問題從而提高應用效能。

課程大綱:

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習企鵝群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系。

 

第一課. Spark背景介紹與安裝部署

             1.1 Spark在大資料生態中的定位

             1.2 Spark主要模組介紹

             1.3 Spark部署模型介紹

             1.4 Spark基於Ambari的安裝

             1.5 Spark Standalone下的HA

第二課. 基於Java的Spark程式設計入門

             2.1 Spark應用中的術語介紹

             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 資料本地性(Data locality)

第四課. 一個Spark應用的一生

             4.1 Spark應用的Stage劃分

             4.2 窄依賴 vs. Shuffle依賴

             4.3 Job邏輯執行計劃

             4.4 Job物理執行計劃

第五課. Shuffle機制變遷

             5.1 Hadoop Shuffle方案

             5.2 Spark Hash Shuffle

             5.3 Spark Sort Shuffle

             5.4 Spark Tungsten Sort Shuffle

第六課. Spark SQL實戰

             6.1 Spark SQL前世今生

             6.2 RDD vs. Dataframe vs. Dataset

             6.3 使用外部資料來源

             6.4 連線metastore

             6.5 自定義函式

             6.6 spark-sql與Spark thrift server

第七課. Spark SQL原理

             7.1 Spark SQL執行過程解析

             7.2 Catalyst原理

             7.3 SQL引擎原理

             7.4 Spark SQL優化

第八課. 例講資料傾斜解決方案

             8.1 為何需要處理資料傾斜

             8.2 調整並行度,分散同一Task的不同Key

             8.3 自定義Partitioner,分散同一Task的不同Key

             8.4 Map Join代替Reduce Join消除資料傾斜

             8.5 為傾斜key增加隨機字首

             8.6 大表增加隨機字首,小表擴容

第九課. Spark Streaming上

             9.1 Spark Streaming示例

             9.2 流式系統關鍵問題分析

             9.3 Window操作

             9.4 如何在流資料上做Join

             9.5 Checkpoint機制

第十課. Spark Streaming下

             10.1 如何處理資料亂序問題

             10.2 Spark Streaming容錯機制

             10.3 Spark與Kafka實現Exactly once

             10.4 Spark Streaming vs. Storm vs. Kafka Stream

             10.5 Spark Streaming效能優化

             10.6 Structured Streaming

第十一課. Spark MLlib

             11.1 Pipeline

             11.2 特徵工程

             11.3 模型選擇

             11.4 調優

第十二課. Spark優化

             12.1 應用程式碼優化

             12.2 Spark統一記憶體模型

             12.3 基於YARN的引數優化

             12.4 其它優化項

授課時間:

課程預計2017年10月26日開課,預計課程持續時間為14周

授課物件:

Java開發轉大資料開發

具有一定Hadoop或其它分散式應用基礎,轉Spark開發

希望在Spark開發和原理上有所提升的大資料開發人員 

課程環境:

Spark 2.1、Hadoop 2.7.3+

收穫預期:

1. 掌握Spark核心原理,包括但不限於Spark Job的執行過程,Shuffle機制

2. 瞭解如何對Spark Job進行效能優化,包括但不限於引數調優,資料傾斜優化,應用程式碼調優

3. 掌握Spark Streaming的原理及使用方式,並掌握如何結合Spark Streaming和Kafka實現正好一次處理語義

4. 瞭解流式處理系統的常見問題和解決方案