圖解Spark 大數(shù)據(jù)快速分析實戰(zhàn)
定 價:109.9 元
當前圖書已被 84 所學校薦購過!
查看明細
- 作者:王磊
- 出版時間:2022/2/1
- ISBN:9787115580115
- 出 版 社:人民郵電出版社
- 中圖法分類:TP274
- 頁碼:320
- 紙張:
- 版次:01
- 開本:16開
本書共8章,內容主要包括Spark概述及入門實戰(zhàn),Spark的作業(yè)調度和資源分配算法,Spark SQL、DataFrame、Dataset的原理和實戰(zhàn),深入理解Spark數(shù)據(jù)源,流式計算的原理和實戰(zhàn),億級數(shù)據(jù)處理平臺Spark性能調優(yōu),Spark機器學習庫,Spark 3.0的新特性和數(shù)據(jù)湖等。
本書適合Spark開發(fā)人員和Spark運維人員閱讀。
基于大數(shù)據(jù)分析實戰(zhàn),圖文并茂,系統(tǒng)講解Spark內核的原理,有助于讀者快速掌握Spark開源集群計算框架的使用方法。
Spark 是專為大規(guī)模數(shù)據(jù)處理而設計的快速通用的計算引擎,本書涵蓋 Spark 3.0 新特性。
本書結合大量原理圖和流程圖,系統(tǒng)介紹Spark內核的相關技術。
本書注重實戰(zhàn),圖文并茂,系統(tǒng)講解了Spark內核原理、Spark實戰(zhàn)應用、 Spark數(shù)據(jù)源、Spark流式計算、Spark性能調優(yōu)和數(shù)據(jù)湖等內容。
通過本書,讀者不僅可以深入理解Spark的原理、使應用、運維、監(jiān)控等技術,還可以快速編寫出性能更好、可靠性更高的大數(shù)據(jù)應用。
本書主要內容:
? Spark內核的原理
? Spark的作業(yè)調度和資源分配算法
? Spark SQL、DataFrame、Dataset的原理和實戰(zhàn)
? Spark數(shù)據(jù)源
? Spark 流式計算原理和實戰(zhàn)
? Spark 億級數(shù)據(jù)處理平臺Spark性能調優(yōu)
? Spark機器學習庫
? Spark 3.0的新特性和數(shù)據(jù)湖等
王磊,阿里云MVP(最有價值專家)、易點天下大數(shù)據(jù)架構師,《Offer來了:Java面試核心知識點精講(原理篇)》和《Offer來了:Java面試核心知識點精講(框架篇)》的作者,極客時間每日一課專欄作者;喜歡讀書和研究新技術,長期從事物聯(lián)網(wǎng)和大數(shù)據(jù)研發(fā)工作;有十余年豐富的物聯(lián)網(wǎng)及大數(shù)據(jù)研發(fā)和技術架構經(jīng)驗,對物聯(lián)網(wǎng)及大數(shù)據(jù)的原理和技術實現(xiàn)有深刻理解;長期從事海外項目的研發(fā)和交付工作,對異地多活數(shù)據(jù)中心的建設及高可用、高并發(fā)系統(tǒng)的設計有豐富的實戰(zhàn)經(jīng)驗。
目 錄
第 1章 Spark概述及入門實戰(zhàn) 1
1.1 Spark簡介 3
1.1.1 為什么要學習Spark 3
1.1.2 學好Spark的關鍵點 5
1.1.3 Spark學習難點 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è)調度和資源分配算法 49
2.1 Spark的作業(yè)調度 49
2.1.1 Spark作業(yè)運行框架概述 49
2.1.2 Spark調度器原理 51
2.1.3 Spark應用程序的核心概念 52
2.1.4 Spark應用程序的調度流程 52
2.1.5 在YARN級別調度Spark作業(yè) 58
2.1.6 在任務級別調度Spark作業(yè) 58
2.1.7 本地化調度簡介 62
2.1.8 本地化調度流程:延遲調度策略 64
2.1.9 Spark任務延遲調度 65
2.1.10 Spark失敗重試與黑名單機制 67
2.1.11 推測執(zhí)行 68
2.1.12 資源分配機制 70
2.2 Spark on YARN資源調度 74
2.2.1 Spark on YARN運行模式 74
2.2.2 YARN調度器 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依賴關系 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基礎概念 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應用 119
3.3 Spark SQL視圖操作 120
3.4 Spark Dataset操作 121
3.5 Spark DataFrame操作 122
3.5.1 DataFrame Schema設置 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表關聯(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 到底應該使用哪種數(shù)據(jù)格式 150
4.3 Spark讀寫HDFS 150
4.3.1 HDFS的概念和特點 150
4.3.2 HDFS架構 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架構 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架構 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架構 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集群架構 175
4.8.3 Kafka數(shù)據(jù)存儲設計 176
4.8.4 Kafka消息并發(fā)設計 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集群架構 184
4.9.4 ElasticSearch副本架構 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應用 202
5.2.5 時間概念、延遲數(shù)據(jù)處理策略和容錯語義 206
5.2.6 Spark Structured Streaming編程模型 208
5.2.7 在結構化數(shù)據(jù)流上執(zhí)行操作 212
5.2.8 啟動Spark Structured Streaming 224
5.2.9 Spark Structured Streaming結果輸出 224
5.2.10 觸發(fā)器 226
第6章 億級數(shù)據(jù)處理平臺Spark性能調優(yōu) 228
6.1 內存調優(yōu) 228
6.1.1 JVM內存調優(yōu) 228
6.1.2 堆外內存設置 232
6.1.3 storageFraction設置 232
6.1.4 Spark JVM調優(yōu)的最佳實踐 233
6.2 任務調優(yōu) 234
6.2.1 驅動器數(shù)量、內存及CPU配置 234
6.2.2 設置合理的并行度 235
6.2.3 任務等待時長調優(yōu) 240
6.2.4 黑名單調優(yōu) 241
6.3 數(shù)據(jù)本地性調優(yōu) 242
6.3.1 數(shù)據(jù)本地化介紹 242
6.3.2 RDD的復用和數(shù)據(jù)持久化 243
6.3.3 廣播變量 244
6.3.4 Kryo序列化 245
6.3.5 檢查點 246
6.4 算子調優(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 連接不產生Shuffle:map-side關聯(lián) 251
6.5 Spark SQL調優(yōu) 251
6.6 Spark Shuffle調優(yōu) 252
6.7 Spark Streaming調優(yōu) 253
6.7.1 設置合理的批處理時間(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 設置合理的CPU資源 254
6.7.7 設置合理的JVM GC 254
6.7.8 在處理數(shù)據(jù)前進行重分區(qū) 254
6.7.9 設置合理的內存 255
6.8 處理Spark數(shù)據(jù)傾斜問題 255
6.8.1 什么是數(shù)據(jù)傾斜 255
6.8.2 導致數(shù)據(jù)傾斜的原因是什么 256
6.8.3 如何判斷Spark應用程序在運行中出現(xiàn)了數(shù)據(jù)傾斜 256
6.8.4 數(shù)據(jù)傾斜消除方案 257
第7章 Spark機器學習庫 259
7.1 Spark機器學習概述 259
7.1.1 為什么要使用機器學習 259
7.1.2 機器學習的應用場景 259
7.1.3 機器學習的分類 260
7.1.4 機器學習算法 261
7.1.5 機器學習流程概述 264
7.1.6 數(shù)據(jù)探索 274
7.2 Spark機器學習常用統(tǒng)計方法 276
7.2.1 常用統(tǒng)計指標概述 276
7.2.2 Spark ML基礎統(tǒng)計實戰(zhàn) 276
7.2.3 Spark ML相關性分析 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
術語的中英文對照表 321