圖解Spark 大數(shù)據(jù)快速分析實戰(zhàn)
定 價:109.9 元
- 作者:王磊
- 出版時間:2022/2/1
- ISBN:9787115580115
- 出 版 社:人民郵電出版社
- 中圖法分類:TP274
- 頁碼:320
- 紙張:
- 版次:01
- 開本:16開
本書共8章,內(nèi)容主要包括Spark概述及入門實戰(zhàn),Spark的作業(yè)調(diào)度和資源分配算法,Spark SQL、DataFrame、Dataset的原理和實戰(zhàn),深入理解Spark數(shù)據(jù)源,流式計算的原理和實戰(zhàn),億級數(shù)據(jù)處理平臺Spark性能調(diào)優(yōu),Spark機器學(xué)習(xí)庫,Spark 3.0的新特性和數(shù)據(jù)湖等。
本書適合Spark開發(fā)人員和Spark運維人員閱讀。
基于大數(shù)據(jù)分析實戰(zhàn),圖文并茂,系統(tǒng)講解Spark內(nèi)核的原理,有助于讀者快速掌握Spark開源集群計算框架的使用方法。
Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,本書涵蓋 Spark 3.0 新特性。
本書結(jié)合大量原理圖和流程圖,系統(tǒng)介紹Spark內(nèi)核的相關(guān)技術(shù)。
本書注重實戰(zhàn),圖文并茂,系統(tǒng)講解了Spark內(nèi)核原理、Spark實戰(zhàn)應(yīng)用、 Spark數(shù)據(jù)源、Spark流式計算、Spark性能調(diào)優(yōu)和數(shù)據(jù)湖等內(nèi)容。
通過本書,讀者不僅可以深入理解Spark的原理、使應(yīng)用、運維、監(jiān)控等技術(shù),還可以快速編寫出性能更好、可靠性更高的大數(shù)據(jù)應(yīng)用。
本書主要內(nèi)容:
? Spark內(nèi)核的原理
? Spark的作業(yè)調(diào)度和資源分配算法
? Spark SQL、DataFrame、Dataset的原理和實戰(zhàn)
? Spark數(shù)據(jù)源
? Spark 流式計算原理和實戰(zhàn)
? Spark 億級數(shù)據(jù)處理平臺Spark性能調(diào)優(yōu)
? Spark機器學(xué)習(xí)庫
? Spark 3.0的新特性和數(shù)據(jù)湖等
王磊,阿里云MVP(最有價值專家)、易點天下大數(shù)據(jù)架構(gòu)師,《Offer來了:Java面試核心知識點精講(原理篇)》和《Offer來了:Java面試核心知識點精講(框架篇)》的作者,極客時間每日一課專欄作者;喜歡讀書和研究新技術(shù),長期從事物聯(lián)網(wǎng)和大數(shù)據(jù)研發(fā)工作;有十余年豐富的物聯(lián)網(wǎng)及大數(shù)據(jù)研發(fā)和技術(shù)架構(gòu)經(jīng)驗,對物聯(lián)網(wǎng)及大數(shù)據(jù)的原理和技術(shù)實現(xiàn)有深刻理解;長期從事海外項目的研發(fā)和交付工作,對異地多活數(shù)據(jù)中心的建設(shè)及高可用、高并發(fā)系統(tǒng)的設(shè)計有豐富的實戰(zhàn)經(jīng)驗。
目 錄
第 1章 Spark概述及入門實戰(zhàn) 1
1.1 Spark簡介 3
1.1.1 為什么要學(xué)習(xí)Spark 3
1.1.2 學(xué)好Spark的關(guān)鍵點 5
1.1.3 Spark學(xué)習(xí)難點 6
1.1.4 本書編寫思路 6
1.2 Spark原理及特點 7
1.2.1 Spark的核心優(yōu)勢 7
1.2.2 Spark生態(tài)介紹 11
1.2.3 Spark模塊的組成 12
1.2.4 Spark運行模式 18
1.2.5 Spark集群的角色組成 18
1.2.6 Spark核心概念 21
1.2.7 Spark作業(yè)運行流程 27
1.3 Spark入門實戰(zhàn) 33
1.3.1 Spark獨立環(huán)境安裝實戰(zhàn) 33
1.3.2 YARN環(huán)境安裝實戰(zhàn) 36
1.3.3 Spark批處理作業(yè)入門實戰(zhàn) 39
1.3.4 Spark流式作業(yè)入門實戰(zhàn) 44
第 2章 Spark的作業(yè)調(diào)度和資源分配算法 49
2.1 Spark的作業(yè)調(diào)度 49
2.1.1 Spark作業(yè)運行框架概述 49
2.1.2 Spark調(diào)度器原理 51
2.1.3 Spark應(yīng)用程序的核心概念 52
2.1.4 Spark應(yīng)用程序的調(diào)度流程 52
2.1.5 在YARN級別調(diào)度Spark作業(yè) 58
2.1.6 在任務(wù)級別調(diào)度Spark作業(yè) 58
2.1.7 本地化調(diào)度簡介 62
2.1.8 本地化調(diào)度流程:延遲調(diào)度策略 64
2.1.9 Spark任務(wù)延遲調(diào)度 65
2.1.10 Spark失敗重試與黑名單機制 67
2.1.11 推測執(zhí)行 68
2.1.12 資源分配機制 70
2.2 Spark on YARN資源調(diào)度 74
2.2.1 Spark on YARN運行模式 74
2.2.2 YARN調(diào)度器 77
2.3 RDD概念 86
2.3.1 RDD簡介 86
2.3.2 RDD的特點 87
2.4 RDD分區(qū) 89
2.4.1 分區(qū)的概念 89
2.4.2 分區(qū)器 89
2.4.3 自定義分區(qū)器 91
2.5 RDD依賴關(guān)系 93
2.6 Stage 94
2.7 RDD持久化 95
2.7.1 RDD持久化的概念 95
2.7.2 RDD持久化的使用 95
2.7.3 RDD持久化級別 96
2.7.4 RDD持久化原則 97
2.8 RDD檢查點 98
2.9 RDD實戰(zhàn) 98
2.9.1 編寫一個簡單的RDD演示程序 98
2.9.2 利用外部存儲系統(tǒng)生成RDD 99
2.9.3 RDD支持Transformation操作和Action操作 101
2.9.4 RDD懶加載 101
2.9.5 Spark函數(shù)的3種實現(xiàn)方式 102
2.9.6 RDD操作中常用Transformation算子的原理及使用 102
2.9.7 RDD操作中常用Action算子的原理及使用 112
2.9.8 Spark廣播變量的概念、好處和使用 114
第3章 Spark SQL、DataFrame、Dataset原理和實戰(zhàn) 117
3.1 Spark SQL基礎(chǔ)概念 117
3.1.1 Spark SQL介紹 117
3.1.2 Spark SQL查詢語句介紹 117
3.1.3 DataFrame的概念 118
3.1.4 Dataset的概念 119
3.2 創(chuàng)建一個Spark SQL應(yīng)用 119
3.3 Spark SQL視圖操作 120
3.4 Spark Dataset操作 121
3.5 Spark DataFrame操作 122
3.5.1 DataFrame Schema設(shè)置 122
3.5.2 DataFrame數(shù)據(jù)加載 123
3.5.3 DataFrame數(shù)據(jù)保存 124
3.6 Spark SQL操作 124
3.6.1 Spark SQL表關(guān)聯(lián)操作 124
3.6.2 Spark SQL函數(shù)操作 125
第4章 深入理解Spark數(shù)據(jù)源 132
4.1 Spark文件讀寫原理 132
4.1.1 Spark數(shù)據(jù)分布 133
4.1.2 Spark數(shù)據(jù)讀取過程 135
4.1.3 Spark數(shù)據(jù)寫出過程 136
4.2 Spark數(shù)據(jù)格式 138
4.2.1 TEXT 138
4.2.2 CSV 139
4.2.3 JSON 140
4.2.4 Parquet 141
4.2.5 ORC 145
4.2.6 AVRO 148
4.2.7 到底應(yīng)該使用哪種數(shù)據(jù)格式 150
4.3 Spark讀寫HDFS 150
4.3.1 HDFS的概念和特點 150
4.3.2 HDFS架構(gòu) 151
4.3.3 HDFS數(shù)據(jù)的寫入和讀取流程 152
4.3.4 HDFS的使用 153
4.4 Spark讀寫HBase 153
4.4.1 HBase的概念 153
4.4.2 HBase架構(gòu) 154
4.4.3 HBase數(shù)據(jù)模型 156
4.4.4 HBase的使用 157
4.5 Spark讀寫MongoDB 159
4.5.1 MongoDB的概念 159
4.5.2 MongoDB數(shù)據(jù)模型 160
4.5.3 MongoDB架構(gòu) 161
4.5.4 MongoDB的使用 164
4.6 Spark讀寫Cassandra 167
4.6.1 Cassandra的概念 167
4.6.2 Gossip協(xié)議 167
4.6.3 Cassandra數(shù)據(jù)模型 168
4.6.4 Cassandra架構(gòu) 169
4.6.5 Cassandra的使用 171
4.7 Spark讀寫MySQL 173
4.8 Spark讀寫Kafka 174
4.8.1 Kafka的概念 174
4.8.2 Kafka集群架構(gòu) 175
4.8.3 Kafka數(shù)據(jù)存儲設(shè)計 176
4.8.4 Kafka消息并發(fā)設(shè)計 178
4.8.5 Kafka的使用 179
4.9 Spark讀寫ElasticSearch 182
4.9.1 ElasticSearch的概念 182
4.9.2 ElasticSearch數(shù)據(jù)模型 183
4.9.3 ElasticSearch集群架構(gòu) 184
4.9.4 ElasticSearch副本架構(gòu) 185
4.9.5 ElasticSearch的使用 186
第5章 Spark流式計算的原理和實戰(zhàn) 189
5.1 Spark Streaming 189
5.1.1 Spark Streaming介紹 189
5.1.2 Spark Streaming入門實戰(zhàn) 190
5.1.3 Spark Streaming的數(shù)據(jù)源 194
5.1.4 DStream 195
5.2 Spark Structured Streaming 199
5.2.1 Spark Structured Streaming介紹 199
5.2.2 Spark Structured Streaming的特點 200
5.2.3 Spark Structured Streaming的數(shù)據(jù)模型 201
5.2.4 創(chuàng)建一個Spark Structured Streaming應(yīng)用 202
5.2.5 時間概念、延遲數(shù)據(jù)處理策略和容錯語義 206
5.2.6 Spark Structured Streaming編程模型 208
5.2.7 在結(jié)構(gòu)化數(shù)據(jù)流上執(zhí)行操作 212
5.2.8 啟動Spark Structured Streaming 224
5.2.9 Spark Structured Streaming結(jié)果輸出 224
5.2.10 觸發(fā)器 226
第6章 億級數(shù)據(jù)處理平臺Spark性能調(diào)優(yōu) 228
6.1 內(nèi)存調(diào)優(yōu) 228
6.1.1 JVM內(nèi)存調(diào)優(yōu) 228
6.1.2 堆外內(nèi)存設(shè)置 232
6.1.3 storageFraction設(shè)置 232
6.1.4 Spark JVM調(diào)優(yōu)的最佳實踐 233
6.2 任務(wù)調(diào)優(yōu) 234
6.2.1 驅(qū)動器數(shù)量、內(nèi)存及CPU配置 234
6.2.2 設(shè)置合理的并行度 235
6.2.3 任務(wù)等待時長調(diào)優(yōu) 240
6.2.4 黑名單調(diào)優(yōu) 241
6.3 數(shù)據(jù)本地性調(diào)優(yōu) 242
6.3.1 數(shù)據(jù)本地化介紹 242
6.3.2 RDD的復(fù)用和數(shù)據(jù)持久化 243
6.3.3 廣播變量 244
6.3.4 Kryo序列化 245
6.3.5 檢查點 246
6.4 算子調(diào)優(yōu) 248
6.4.1 使用mapPartitions()或
mapPartitionWithIndex()函數(shù)取代map()函數(shù) 248
6.4.2 使用foreachPartition()函數(shù)取代foreach()函數(shù) 249
6.4.3 使用coalesce()函數(shù)取代repartition()函數(shù) 249
6.4.4 使用repartitionAndSortWithin-
Partitions()函數(shù)取代“重分區(qū)+排序”操作 250
6.4.5 使用reduceByKey()函數(shù)取代groupByKey()函數(shù) 250
6.4.6 連接不產(chǎn)生Shuffle:map-side關(guān)聯(lián) 251
6.5 Spark SQL調(diào)優(yōu) 251
6.6 Spark Shuffle調(diào)優(yōu) 252
6.7 Spark Streaming調(diào)優(yōu) 253
6.7.1 設(shè)置合理的批處理時間(batchDuration) 253
6.7.2 增加并行度 253
6.7.3 使用Kryo序列化器序列化數(shù)據(jù) 254
6.7.4 緩存經(jīng)常需要使用的數(shù)據(jù) 254
6.7.5 清除不需要的數(shù)據(jù) 254
6.7.6 設(shè)置合理的CPU資源 254
6.7.7 設(shè)置合理的JVM GC 254
6.7.8 在處理數(shù)據(jù)前進行重分區(qū) 254
6.7.9 設(shè)置合理的內(nèi)存 255
6.8 處理Spark數(shù)據(jù)傾斜問題 255
6.8.1 什么是數(shù)據(jù)傾斜 255
6.8.2 導(dǎo)致數(shù)據(jù)傾斜的原因是什么 256
6.8.3 如何判斷Spark應(yīng)用程序在運行中出現(xiàn)了數(shù)據(jù)傾斜 256
6.8.4 數(shù)據(jù)傾斜消除方案 257
第7章 Spark機器學(xué)習(xí)庫 259
7.1 Spark機器學(xué)習(xí)概述 259
7.1.1 為什么要使用機器學(xué)習(xí) 259
7.1.2 機器學(xué)習(xí)的應(yīng)用場景 259
7.1.3 機器學(xué)習(xí)的分類 260
7.1.4 機器學(xué)習(xí)算法 261
7.1.5 機器學(xué)習(xí)流程概述 264
7.1.6 數(shù)據(jù)探索 274
7.2 Spark機器學(xué)習(xí)常用統(tǒng)計方法 276
7.2.1 常用統(tǒng)計指標概述 276
7.2.2 Spark ML基礎(chǔ)統(tǒng)計實戰(zhàn) 276
7.2.3 Spark ML相關(guān)性分析 277
7.2.4 Spark ML數(shù)據(jù)抽樣 279
7.3 Spark分類模型 280
7.3.1 分類模型介紹 280
7.3.2 線性回歸 283
7.3.3 邏輯回歸 286
7.3.4 樸素貝葉斯 288
7.3.5 決策樹 290
7.4 協(xié)同過濾 293
7.5 Spark聚類模型 295
7.5.1 聚類模型的概念 295
7.5.2 聚類分析算法 296
7.5.3 k-均值算法模型 296
第8章 Spark 3.0的新特性和數(shù)據(jù)湖 302
8.1 Spark 3.0新特性概述 302
8.1.1 AQE 303
8.1.2 Spark SQL的新特性 305
8.1.3 Koalas和增強的PySpark 310
8.1.4 數(shù)據(jù)湖 311
8.1.5 Hydrogen、流和可擴展性 311
8.1.6 Spark 3.0的其他新特性 311
8.2 Spark未來的趨勢——數(shù)據(jù)湖 312
8.2.1 為什么需要數(shù)據(jù)湖 312
8.2.2 Delta Lake 314
8.2.3 Delta Lake實戰(zhàn) 316
術(shù)語的中英文對照表 321