系統的學習大數據分佈式計算spark技術

我們在學習一門技術的時候一定要以系統的思維去學習,這樣的話,不僅對你的提高有很大的幫助,也可以讓你高效的使用這個技術。


對於學習spark,當然也是要以系統的思維去全面的學習。這篇博客是我係統的學習spark的點點滴滴,寫這篇博客的目的有兩:一是將自己多年學習到的知識的總結;二是分享給大家,希望對大家有幫助


系統的學習spark技術的形式有兩種:博客和視頻,對於能用博客說明白的問題,會以免費的博客形式給出,但是對於一些原理性的東西用博客很難說的很明白,所以會以視頻給出


這個系統學習spark的名稱是:spark2.x 由淺入深深到底系列知識。所謂的"淺"是指一定的場景或者問題,然後"入深"就是這個解決這個場景以及問題的原理是什麼,然後再“深”就是指這些場景以及問題的原理在我們的代碼層面上是怎麼實現的,就是會涉及到源碼的閱讀,最後“到底”就是我們的實踐了,然後用實踐產生價值


以下是系統學習spark的步驟:


一、spark2.x 由淺入深深到底系列一:正確理解spark

只有正確理解spark了,我們才能確定學習spark的方向和思路,這個是指路燈。

這個我們以視頻的方式給出,視頻的鏈接URL是:http://edu.51cto.com/course/10932.html 

在這個視頻中,我們會弄明白下面的幾個問題:

1: 徹底弄懂什麼是RDD及其特點

2: 徹底弄懂什麼是spark的分佈式內存計算

3: 徹底弄懂spark是怎樣解決各個領域問題,以及在解決各個領域問題的時候的特點

同時,我們會徹底搞明白下面的兩個問題:

1: spark是基於內存的,MapReduce是基於磁盤的,所以spark比MapReduce快,真的是這樣的嗎?

2: spark的分佈式內存是怎麼樣合理的使用的,或者說用在哪些場景下是合理的


二、spark2.x 由淺入深深到底系列二:spark core RDD Api

對spark core中的RDD中的每一個scala api的用法、用的過程中需要注意的點以及每一個api的原理都做了系統的深入的講解

這個我們以視頻的方式給出,視頻的鏈接URL是:http://edu.51cto.com/course/11058.html 

這個視頻中的內容包括如下:

第一章: 課程內容以及課程需要的環境的描述


第二章: 瞭解scala

瞭解scala的基本概念,包括:

1、scala之面向對象編程

2、scala之函數式編程

3、scala的兩個特徵:閉包和數據結構Option


第三章: RDD概念

根據RDD的特點,進而提出RDD的定義以及RDD的優勢


第四章: RDD的創建

詳細講解創建RDD的api,並且詳細分析了parallelize和makeRDD兩個api的原理和差異


第五章: RDD的依賴

RDD的依賴的設計,並詳細講解了爲什麼RDD這麼設計依賴


第六章: RDD的分區

1、用原理圖的方式展示了RDD分區器HashPartitioner的工作原理

2、講解利用分區器是怎麼樣進行性能優化的

3、結合原理圖和源代碼講解RangePartitioner的工作原理以及使用場景

4、結合實例自定義RDD的分區器Partitioner

5、RDD分區數控制api - coalesce 和 repartition的使用場景以及兩者的區別

6、結合原理圖和源代碼講解coalesce的原理


第七章: 單類型RDD的api詳解

1、單類型RDD的transformation api的使用及其需要注意的點,包括map, mapPartition, flatMap等api

2、MapPartitionsRDD的原理代碼詳解

3、RDD的採樣api(sample等)介紹

4、RDD分層採樣api(sampleByKey等)的介紹

5、RDD的pipe api的使用方式以及使用過程中需要注意的點

6、RDD的pipe的原理深入講解

7、單類型RDD的基本action api的講解,包括foreach、first、collect等

8、單類型RDD基本action api講解,包括reduce、fold以及aggregate等。同時分析了reduce和treeReduce以及aggregate和treeAggregate的原理和區別


第八章 key-value類型RDD的api詳解

1、combineBykey的七大參數的詳解

2、ShuffleRDD的原理詳解

3、基於combineByKey的api詳解,包括aggregateByKey、reduceByKey、foldByKey以及groupByKey等

4、combineBykey實戰以及使用過程中需要注意的點

5、reduceByKey和groupByKey的對比,同時包含了reduce和fold的對比

6、cogroup api的感官認識,包括基於cogroup實現的join、leftOuterJoin、rightOuterJoin、fullOuterJoin以及subtractByKey等api

7、通過原理圖和源代碼詳解cogroup原理

8、join等api的原理實現

9、subtractByKey的原理

10、sortedByKey原理,利用RangePartitioner實現優化

11、count、countByKey等計數api,包括近似估算等api


第九章: 二元RDD操作

1、union的使用及其原理

2、intersection的使用及其原理

3、cartesian笛卡爾積的使用及其原理

4、zip的使用及其原理


第十章: persist 和 checkpoint機制

1、RDD的緩存機制,即persist

2、checkpoint的作用和實現流程

3、checkpoint實現原理

4、localCheckpoint和checkpoint的優缺點


第十一章: Spark讀寫外部數據源

1、spark支持的讀寫存儲系統

2、HadoopRDD的原理和實現

3、spark支持的通用的文件格式,重點會講述了SequenceFile的數據結構以及需要注意的點,包括text file、CSV file、Sequence file 、 Object file以及MapFile等

4、spark支持的hbase file的讀寫代碼

5、行式存儲文件格式(avro)和列式存儲文件格式(parquet)讀寫的詳細講解

6、spark對二進制數據的讀寫的api詳解


第十二章: broadcast和accumulator兩個api的詳解


第十三章: RDD項目實戰

以本人真實參加的項目來串聯我們這個課程所將到的api


三、spark2.x 由淺入深深到底系列三:spark core正確提交spark應用

我們一般用spark-submit來提交一個spark應用,所以我們需要理解透spark-submit中的每一個參數的用法及其原理,以達到正確提交各種業務場景下的spark應用。在理解透了spark-submit中的每一個參數的用法及其原理後,我們需要理解透spark-submit的原理,這個也是打開深入學習spark的大門

這個我們以視頻的方式給出,視頻的鏈接URL是:http://edu.51cto.com/course/11132.html 

這個視頻的內容包括:

第一章:課程內容簡介


第二章:java基礎知識

2.1 java命令啓動JVM

2.2 java ProcessBuilder啓動JVM


第三章:詳解spark-submit的每一個參數

3.1 spark-submit感官認識

3.2 master和deploy-mode參數詳解

3.3 --conf參數詳解

3.4 driver相關參數的詳解

3.5 executor相關參數的詳解

3.6 --jars參數詳解

3.7 --package相關參數詳解

3.8 --files參數詳解

3.9 --queue相關參數的詳解

3.10 python spark應用的正確提交

3.11 利用SparkLauncher在代碼中提交spark應用


第四章 spark-submit原理

4.1 spark腳本系統

4.2 spark-class腳本原理以及實現

4.3 spark-daemon腳本原理以及實現

4.4 SparkSubmit原理以及源碼分析


四、spark2.x 由淺入深深到底系列四:spark core - scheduler on driver

由淺入深的講解spark應用是怎麼樣拆分成task的,然後怎麼在集羣中調度的,以及深入講解了task調度的過程中的本地性規則、推測機制以及黑名單機制等。

這章比較偏原理,但是我會以一種通俗易懂的話語來講透這些原理,你會發現,你覺得很複雜的東東其實都是那麼的簡單

這個我們以視頻的方式給出:大概十一之前會發布視頻

大致的內容包括(可能會變,以發佈出來的視頻爲準):

第一章:課程內容以及環境


第二章:一個spark應用中的調度

2.1 DAG的劃分

2.2 stage的調度流程原理

2.3 task的延遲調度及性能調優

2.4 task的推測機制及其使用場景

2.5 Blacklist機制及其使用場景

2.6 資源調度及其管理


第三章:多個spark應用的調度

3.1 資源動態分配的前提

3.2 資源動態分配的機制


五、spark2.x 由淺入深深到底系列五:spark core - shuffle實現原理以及調優

在這個課程中會以通俗易懂的話語徹底說清楚spark的shuffle的實現原理以及調優過程

這個課程的內容大致會涉及到:內存管理原理、存儲管理原理、mapoutTracker實現原理以及shuffle管理原理

這個我們以視頻的方式給出:發佈時間待定


六、spark2.x 由淺入深深到底系列六:spark core RDD java api

這個是對系列二的一個補充,會詳細介紹RDD java api的實現原理,以及api的用法

這個以博客的形式給出,博客地址爲:http://7639240.blog.51cto.com/7629240/d-1 

會時時更新,以達到將自己所有知道的都寫進去


七、spark2.x 由淺入深深到底系列七:spark core RDD python api

這個是對系列二的一個補充,會詳細介紹RDD python api的實現原理,以及api的用法

這個以博客的形式給出,博客地址爲:http://7639240.blog.51cto.com/7629240/d-2 

這個目前還不是很完善,有空會時時更新


八、 spark2.x 由淺入深深到底系列八:spark core必備基礎知識

本課程主要會深入理解spark core的三個基礎組件以及我們深入理解spark需要的部分的基礎java知識

目標:

1: spark的安全管理

2: spark的序列化機制

3: sparkRPC機制,包括部分的nio的知識點

這個以博客的形式給出,博客地址爲:待定


九、 spark2.x 由淺入深深到底系列九:spark core集羣資源管理機制

本課程會詳細的理解spark的三種資源管理機制:

1: spark自帶的standalone模式,以及深入講解standalone的實現原理

2: hadoopyarn模式,這節課使的我們徹底弄明白spark是怎麼基於yarn來跑任務的,以及我們怎麼樣去自己實現一個往yarn上提交應用的客戶端

3: mesos模式,這節課使的我們徹底弄明白spark是怎麼基於mesos來跑任務的,以及我們怎麼樣去自己實現一個往mesos上提交應用的客戶端


這個以博客的形式給出,博客地址爲:待定





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章