圖解Spark 大數(shù)據(jù)快速分析實(shí)戰(zhàn)
定 價(jià):109.9 元
- 作者:王磊
- 出版時(shí)間:2022/2/1
- ISBN:9787115580115
- 出 版 社:人民郵電出版社
- 中圖法分類:TP274
- 頁碼:320
- 紙張:
- 版次:01
- 開本:16開
本書共8章,內(nèi)容主要包括Spark概述及入門實(shí)戰(zhàn),Spark的作業(yè)調(diào)度和資源分配算法,Spark SQL、DataFrame、Dataset的原理和實(shí)戰(zhàn),深入理解Spark數(shù)據(jù)源,流式計(jì)算的原理和實(shí)戰(zhàn),億級(jí)數(shù)據(jù)處理平臺(tái)Spark性能調(diào)優(yōu),Spark機(jī)器學(xué)習(xí)庫,Spark 3.0的新特性和數(shù)據(jù)湖等。
本書適合Spark開發(fā)人員和Spark運(yùn)維人員閱讀。
基于大數(shù)據(jù)分析實(shí)戰(zhàn),圖文并茂,系統(tǒng)講解Spark內(nèi)核的原理,有助于讀者快速掌握Spark開源集群計(jì)算框架的使用方法。
Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,本書涵蓋 Spark 3.0 新特性。
本書結(jié)合大量原理圖和流程圖,系統(tǒng)介紹Spark內(nèi)核的相關(guān)技術(shù)。
本書注重實(shí)戰(zhàn),圖文并茂,系統(tǒng)講解了Spark內(nèi)核原理、Spark實(shí)戰(zhàn)應(yīng)用、 Spark數(shù)據(jù)源、Spark流式計(jì)算、Spark性能調(diào)優(yōu)和數(shù)據(jù)湖等內(nèi)容。
通過本書,讀者不僅可以深入理解Spark的原理、使應(yīng)用、運(yùn)維、監(jiān)控等技術(shù),還可以快速編寫出性能更好、可靠性更高的大數(shù)據(jù)應(yīng)用。
本書主要內(nèi)容:
? Spark內(nèi)核的原理
? Spark的作業(yè)調(diào)度和資源分配算法
? Spark SQL、DataFrame、Dataset的原理和實(shí)戰(zhàn)
? Spark數(shù)據(jù)源
? Spark 流式計(jì)算原理和實(shí)戰(zhàn)
? Spark 億級(jí)數(shù)據(jù)處理平臺(tái)Spark性能調(diào)優(yōu)
? Spark機(jī)器學(xué)習(xí)庫
? Spark 3.0的新特性和數(shù)據(jù)湖等
王磊,阿里云MVP(最有價(jià)值專家)、易點(diǎn)天下大數(shù)據(jù)架構(gòu)師,《Offer來了:Java面試核心知識(shí)點(diǎn)精講(原理篇)》和《Offer來了:Java面試核心知識(shí)點(diǎn)精講(框架篇)》的作者,極客時(shí)間每日一課專欄作者;喜歡讀書和研究新技術(shù),長(zhǎng)期從事物聯(lián)網(wǎng)和大數(shù)據(jù)研發(fā)工作;有十余年豐富的物聯(lián)網(wǎng)及大數(shù)據(jù)研發(fā)和技術(shù)架構(gòu)經(jīng)驗(yàn),對(duì)物聯(lián)網(wǎng)及大數(shù)據(jù)的原理和技術(shù)實(shí)現(xiàn)有深刻理解;長(zhǎng)期從事海外項(xiàng)目的研發(fā)和交付工作,對(duì)異地多活數(shù)據(jù)中心的建設(shè)及高可用、高并發(fā)系統(tǒng)的設(shè)計(jì)有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
目 錄
第 1章 Spark概述及入門實(shí)戰(zhàn) 1
1.1 Spark簡(jiǎn)介 3
1.1.1 為什么要學(xué)習(xí)Spark 3
1.1.2 學(xué)好Spark的關(guān)鍵點(diǎn) 5
1.1.3 Spark學(xué)習(xí)難點(diǎn) 6
1.1.4 本書編寫思路 6
1.2 Spark原理及特點(diǎn) 7
1.2.1 Spark的核心優(yōu)勢(shì) 7
1.2.2 Spark生態(tài)介紹 11
1.2.3 Spark模塊的組成 12
1.2.4 Spark運(yùn)行模式 18
1.2.5 Spark集群的角色組成 18
1.2.6 Spark核心概念 21
1.2.7 Spark作業(yè)運(yùn)行流程 27
1.3 Spark入門實(shí)戰(zhàn) 33
1.3.1 Spark獨(dú)立環(huán)境安裝實(shí)戰(zhàn) 33
1.3.2 YARN環(huán)境安裝實(shí)戰(zhàn) 36
1.3.3 Spark批處理作業(yè)入門實(shí)戰(zhàn) 39
1.3.4 Spark流式作業(yè)入門實(shí)戰(zhàn) 44
第 2章 Spark的作業(yè)調(diào)度和資源分配算法 49
2.1 Spark的作業(yè)調(diào)度 49
2.1.1 Spark作業(yè)運(yùn)行框架概述 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級(jí)別調(diào)度Spark作業(yè) 58
2.1.6 在任務(wù)級(jí)別調(diào)度Spark作業(yè) 58
2.1.7 本地化調(diào)度簡(jiǎn)介 62
2.1.8 本地化調(diào)度流程:延遲調(diào)度策略 64
2.1.9 Spark任務(wù)延遲調(diào)度 65
2.1.10 Spark失敗重試與黑名單機(jī)制 67
2.1.11 推測(cè)執(zhí)行 68
2.1.12 資源分配機(jī)制 70
2.2 Spark on YARN資源調(diào)度 74
2.2.1 Spark on YARN運(yùn)行模式 74
2.2.2 YARN調(diào)度器 77
2.3 RDD概念 86
2.3.1 RDD簡(jiǎn)介 86
2.3.2 RDD的特點(diǎn) 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持久化級(jí)別 96
2.7.4 RDD持久化原則 97
2.8 RDD檢查點(diǎn) 98
2.9 RDD實(shí)戰(zhàn) 98
2.9.1 編寫一個(gè)簡(jiǎn)單的RDD演示程序 98
2.9.2 利用外部存儲(chǔ)系統(tǒng)生成RDD 99
2.9.3 RDD支持Transformation操作和Action操作 101
2.9.4 RDD懶加載 101
2.9.5 Spark函數(shù)的3種實(shí)現(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原理和實(shí)戰(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)建一個(gè)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的概念和特點(diǎn) 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ù)存儲(chǔ)設(shè)計(jì) 176
4.8.4 Kafka消息并發(fā)設(shè)計(jì) 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流式計(jì)算的原理和實(shí)戰(zhàn) 189
5.1 Spark Streaming 189
5.1.1 Spark Streaming介紹 189
5.1.2 Spark Streaming入門實(shí)戰(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的特點(diǎn) 200
5.2.3 Spark Structured Streaming的數(shù)據(jù)模型 201
5.2.4 創(chuàng)建一個(gè)Spark Structured Streaming應(yīng)用 202
5.2.5 時(shí)間概念、延遲數(shù)據(jù)處理策略和容錯(cuò)語義 206
5.2.6 Spark Structured Streaming編程模型 208
5.2.7 在結(jié)構(gòu)化數(shù)據(jù)流上執(zhí)行操作 212
5.2.8 啟動(dòng)Spark Structured Streaming 224
5.2.9 Spark Structured Streaming結(jié)果輸出 224
5.2.10 觸發(fā)器 226
第6章 億級(jí)數(shù)據(jù)處理平臺(tái)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)的最佳實(shí)踐 233
6.2 任務(wù)調(diào)優(yōu) 234
6.2.1 驅(qū)動(dòng)器數(shù)量、內(nèi)存及CPU配置 234
6.2.2 設(shè)置合理的并行度 235
6.2.3 任務(wù)等待時(shí)長(zhǎng)調(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 檢查點(diǎn) 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è)置合理的批處理時(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ù)前進(jìn)行重分區(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)用程序在運(yùn)行中出現(xiàn)了數(shù)據(jù)傾斜 256
6.8.4 數(shù)據(jù)傾斜消除方案 257
第7章 Spark機(jī)器學(xué)習(xí)庫 259
7.1 Spark機(jī)器學(xué)習(xí)概述 259
7.1.1 為什么要使用機(jī)器學(xué)習(xí) 259
7.1.2 機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景 259
7.1.3 機(jī)器學(xué)習(xí)的分類 260
7.1.4 機(jī)器學(xué)習(xí)算法 261
7.1.5 機(jī)器學(xué)習(xí)流程概述 264
7.1.6 數(shù)據(jù)探索 274
7.2 Spark機(jī)器學(xué)習(xí)常用統(tǒng)計(jì)方法 276
7.2.1 常用統(tǒng)計(jì)指標(biāo)概述 276
7.2.2 Spark ML基礎(chǔ)統(tǒng)計(jì)實(shí)戰(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和增強(qiáng)的PySpark 310
8.1.4 數(shù)據(jù)湖 311
8.1.5 Hydrogen、流和可擴(kuò)展性 311
8.1.6 Spark 3.0的其他新特性 311
8.2 Spark未來的趨勢(shì)——數(shù)據(jù)湖 312
8.2.1 為什么需要數(shù)據(jù)湖 312
8.2.2 Delta Lake 314
8.2.3 Delta Lake實(shí)戰(zhàn) 316
術(shù)語的中英文對(duì)照表 321