循序漸進學Spark
內容描述
這是一本引導讀者深度學習Spark的技術指南。它由國內具實力的大數據在線教育機構小象學院組織撰寫,旨在用合理的結構和精煉的內容讓讀者用短的時間掌握Spark技術的核心內容。第1章和第2章分別講解了Spark的開發環境和編程模型;第3章分析了Spark的工作機制和原理;第4章則結合源代碼分析了Spark的內核架構和實現原理;第5章講解了Spark與YARN的結合應用;第6章介紹了Spark生態中其他模塊的功能和使用;第7章總結了Spark性能調優方面的技巧和方法;第8章描述了Spark2.0發布後,其模塊API的變化以及新增的功能特性。
目錄大綱
前言
第1章Spark架構與集群環境1
1.1Spark概述與架構1
1.1.1Spark概述2
1.1.2Spark生態3
1.1.3Spark架構5
1.2在Linux集群上部署Spark8
1.2.1安裝OpenJDK9
1.2.2安裝Scala9
1.2. 3配置SSH免密碼登錄10
1.2.4Hadoop的安裝配置10
1.2.5Spark的安裝部署13
1.2.6Hadoop與Spark的集群複製14
1.3Spark集群試運行15
1.4IntellijIDEA的安裝與配置17
1.4.1Intellij的安裝17
1.4 .2Intellij的配置17
1.5EclipseIDE的安裝與配置18
1.6使用SparkShell開發運行Spark程序19
1.7本章小結20
第2章Spark編程模型21
2.1RDD彈性分佈式數據集21
2.1.1RDD簡介22
2.1.2深入理解RDD22
2.1.3RDD特性總結24
2.2Spark程序模型25
2.3Spark算子26
2.3.1算子簡介26
2.3.2Value型Transmation算子27
2.3.3Key—Value型Transmation算子32
2.3.4Action算子34
2.4本章小結37
第3章Spark機制原理38
3.1Spark應用執行機制分析38
3.1.1Spark應用的基本概念38
3.1.2Spark應用執行機制概要39
3.1.3應用提交與執行41
3.2Spark調度機制4 2
3.2.1Application的調度42
3.2.2job的調度43
3.2.3stage(調度階段)和TasksetManager的調度46
3.2.4task的調度50
3.3Spark存儲與I/O52
3.3.1Spark存儲系統概覽52
3.3.2BlockManager中的通信54
3.4Spark通信機制54
3.4.1分佈式通信方式54
3.4.2通信框架AKKA56
3.4.3Client、Master和Worker之間的通信57
3.5容錯機制及依賴65
3.5.1Lineage(血統)機制66
3.5.2Checkpoint (檢查點)機制68
3.6Shuffle機制70
3.6.1什麼是Shuffle70
3.6.2Shuffle歷史及細節72
3.7本章小結78
第4章深入Spark內核79
4.1Spark代碼佈局79
4.1.1Spark源碼佈局簡介79
4.1.2SparkCore內模塊概述80
4.1.3SparkCore外模塊概述80
4.2Spark執行主線(RDD→Task)剖析80
4.2.1從RDD到DAGScheduler81
4.2.2從DAGScheduler到TaskScheduler82
4.2.3從TaskScheduler到Worker節點88
4.3Client、Master和Worker交互過程剖析89
4.3.1交互流程概覽89
4.3.2交互過程調用90
4.4Shuffle觸發96
4.4.1觸發ShuffleWrite96
4.4.2觸發ShuffleRead98
4.5Sp ark存儲策略100
4.5.1CacheManager職能101
4.5.2BlockManager職能105
4.5.3DiskStore與DiskBlock——Manager類113
4.5.4MemoryStore類114
4.6本章小結117
第5章SparkonYARN118
5.1YARN概述118
5.2SparkonYARN的部署模式121
5.3SparkonYARN的配置重點125
5.3.1YARN的自身內存配置126
5.3.2SparkonYARN的重要配置127
5.4本章小結128
第6章BDAS生態主要模塊129
6.1SparkSQL129
6.1.1SparkSQL概述130
6.1.2SparkSQL的架構分析132
6.1.3SparkSQL如何使用135
6.2SparkStreaming140
6.2.1SparkStreaming概述140
6.2.2SparkStreaming的架構分析143
6.2.3SparkStreaming編程模型145
6.2.4數據源DataSource147
6.2.5DStream操作149
6.3SparkR154
6.3.1R語言概述154
6.3.2SparkR簡介155
6.3.3DataFrame創建156
6.3 .4DataFrame操作158
6.4MLlibonSpark162
6.4.1機器學習概述162
6.4.2機器學習的研究方向與問題164
6.4.3機器學習的常見算法167
6.4.4MLlib概述210
6.4.5MLlib架構212
6.4.6MLlib使用實例——電影推薦214
6.5本章小結220
第7章Spa rk調優221
7.1參數配置221
7.2調優技巧223
7.2.1序列化優化223
7.2.2內存優化224
7.2.3數據本地化228
7.2.4其他優化考慮229
7.3實踐中常見調優問題及思考230
7.4本章小結231
第8章Spark2.0.0232
8.1功能變化232
8.1.1刪除的功能232
8.1.2Spark中發生變化的行為233
8.1.3不再建議使用的功能233
8.2Core以及SparkSQL的改變234
8.2.1編程API234
8.2.2多說些關於SparkSession234
8.2.3SQL236
8.3MLlib237
8.3.1新功能237
8.3.2速度/擴展性237
8.4SparkR238
8.5Streaming238
8.5.1初識結構化Streaming238
8.5.2結構化Streaming編程模型239
8.5.3結果輸出240
8.6依賴、打包242
8.7本章小結242