圖解 Spark 大數據快速分析實戰

圖解 Spark 大數據快速分析實戰

作者: 王磊
出版社: 人民郵電
出版在: 2022-02-01
ISBN-13: 9787115580115
ISBN-10: 7115580111
總頁數: 320 頁





內容描述


本書共8章,內容主要包括Spark概述及入門實戰,Spark的作業調度和資源分配算法,Spark SQL、DataFrame、Dataset的原理和實戰,深入理解Spark數據源,流式計算的原理和實戰,億級數據處理平臺Spark性能調優,Spark機器學習庫,Spark 3.0的新特性和數據湖等。
本書適合Spark開發人員和Spark運維人員閱讀。


目錄大綱


目  錄
 
 
 
 
 
第 1章 Spark概述及入門實戰 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的核心優勢 7
1.2.2 Spark生態介紹 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作業運行流程 27
1.3 Spark入門實戰 33
1.3.1 Spark獨立環境安裝實戰 33
1.3.2 YARN環境安裝實戰 36
1.3.3 Spark批處理作業入門實戰 39
1.3.4 Spark流式作業入門實戰 44
第 2章 Spark的作業調度和資源分配算法 49
2.1 Spark的作業調度 49
2.1.1 Spark作業運行框架概述 49
2.1.2 Spark調度器原理 51
2.1.3 Spark應用程序的核心概念 52
2.1.4 Spark應用程序的調度流程 52
2.1.5 在YARN級別調度Spark作業 58
2.1.6 在任務級別調度Spark作業 58
2.1.7 本地化調度簡介 62
2.1.8 本地化調度流程:延遲調度策略 64
2.1.9 Spark任務延遲調度 65
2.1.10 Spark失敗重試與黑名單機制 67
2.1.11 推測執行 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分區 89
2.4.1 分區的概念 89
2.4.2 分區器 89
2.4.3 自定義分區器 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實戰 98
2.9.1 編寫一個簡單的RDD演示程序 98
2.9.2 利用外部存儲系統生成RDD 99
2.9.3 RDD支持Transformation操作和Action操作 101
2.9.4 RDD懶加載 101
2.9.5 Spark函數的3種實現方式 102
2.9.6 RDD操作中常用Transformation算子的原理及使用 102
2.9.7 RDD操作中常用Action算子的原理及使用 112
2.9.8 Spark廣播變量的概念、好處和使用 114
第3章 Spark SQL、DataFrame、Dataset原理和實戰 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 創建一個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數據加載 123
3.5.3 DataFrame數據保存 124
3.6 Spark SQL操作 124
3.6.1 Spark SQL表關聯操作 124
3.6.2 Spark SQL函數操作 125
第4章 深入理解Spark數據源 132
4.1 Spark文件讀寫原理 132
4.1.1 Spark數據分佈 133
4.1.2 Spark數據讀取過程 135
4.1.3 Spark數據寫出過程 136
4.2 Spark數據格式 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 到底應該使用哪種數據格式 150
4.3 Spark讀寫HDFS 150
4.3.1 HDFS的概念和特點 150
4.3.2 HDFS架構 151
4.3.3 HDFS數據的寫入和讀取流程 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數據模型 156
4.4.4 HBase的使用 157
4.5 Spark讀寫MongoDB 159
4.5.1 MongoDB的概念 159
4.5.2 MongoDB數據模型 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協議 167
4.6.3 Cassandra數據模型 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數據存儲設計 176
4.8.4 Kafka消息並發設計 178
4.8.5 Kafka的使用 179
4.9 Spark讀寫ElasticSearch 182
4.9.1 ElasticSearch的概念 182
4.9.2 ElasticSearch數據模型 183
4.9.3 ElasticSearch集群架構 184
4.9.4 ElasticSearch副本架構 185
4.9.5 ElasticSearch的使用 186
第5章 Spark流式計算的原理和實戰 189
5.1 Spark Streaming 189
5.1.1 Spark Streaming介紹 189
5.1.2 Spark Streaming入門實戰 190
5.1.3 Spark Streaming的數據源 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的數據模型 201
5.2.4 創建一個Spark Structured Streaming應用 202
5.2.5 時間概念、延遲數據處理策略和容錯語義 206
5.2.6 Spark Structured Streaming編程模型 208
5.2.7 在結構化數據流上執行操作 212
5.2.8 啟動Spark Structured Streaming 224
5.2.9 Spark Structured Streaming結果輸出 224
5.2.10 觸發器 226
第6章 億級數據處理平臺Spark性能調優 228
6.1 內存調優 228
6.1.1 JVM內存調優 228
6.1.2 堆外內存設置 232
6.1.3 storageFraction設置 232
6.1.4 Spark JVM調優的最佳實踐 233
6.2 任務調優 234
6.2.1 驅動器數量、內存及CPU配置 234
6.2.2 設置合理的並行度 235
6.2.3 任務等待時長調優 240
6.2.4 黑名單調優 241
6.3 數據本地性調優 242
6.3.1 數據本地化介紹 242
6.3.2 RDD的復用和數據持久化 243
6.3.3 廣播變量 244
6.3.4 Kryo序列化 245
6.3.5 檢查點 246
6.4 算子調優 248
6.4.1 使用mapPartitions()或
mapPartitionWithIndex()函數取代map()函數 248
6.4.2 使用foreachPartition()函數取代foreach()函數 249
6.4.3 使用coalesce()函數取代repartition()函數 249
6.4.4 使用repartitionAndSortWithin-
Partitions()函數取代“重分區+排序”操作 250
6.4.5 使用reduceByKey()函數取代groupByKey()函數 250
6.4.6 連接不產生Shuffle:map-side關聯 251
6.5 Spark SQL調優 251
6.6 Spark Shuffle調優 252
6.7 Spark Streaming調優 253
6.7.1 設置合理的批處理時間(batchDuration) 253
6.7.2 增加並行度 253
6.7.3 使用Kryo序列化器序列化數據 254
6.7.4 緩存經常需要使用的數據 254
6.7.5 清除不需要的數據 254
6.7.6 設置合理的CPU資源 254
6.7.7 設置合理的JVM GC 254
6.7.8 在處理數據前進行重分區 254
6.7.9 設置合理的內存 255
6.8 處理Spark數據傾斜問題 255
6.8.1 什麽是數據傾斜 255
6.8.2 導致數據傾斜的原因是什麽 256
6.8.3 如何判斷Spark應用程序在運行中出現了數據傾斜 256
6.8.4 數據傾斜消除方案 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 數據探索 274
7.2 Spark機器學習常用統計方法 276
7.2.1 常用統計指標概述 276
7.2.2 Spark ML基礎統計實戰 276
7.2.3 Spark ML相關性分析 277
7.2.4 Spark ML數據抽樣 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 協同過濾 293
7.5 Spark聚類模型 295
7.5.1 聚類模型的概念 295
7.5.2 聚類分析算法 296
7.5.3 k-均值算法模型 296
第8章 Spark 3.0的新特性和數據湖 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 數據湖 311
8.1.5 Hydrogen、流和可擴展性 311
8.1.6 Spark 3.0的其他新特性 311
8.2 Spark未來的趨勢——數據湖 312
8.2.1 為什麽需要數據湖 312
8.2.2 Delta Lake 314
8.2.3 Delta Lake實戰 316
術語的中英文對照表 321


作者介紹


王磊,阿里云MVP、易点天下大数据架构师,《Offer来了:Java面试核心知识点精讲(原理篇)》和《Offer来了:Java面试核心知识点精讲(框架篇)》的作者,极客时间每日一课专栏作者;喜欢读书和研究新技术,长期从事物联网和大数据研发工作;有十余年丰富的物联网及大数据研发和技术架构经验,对物联网及大数据的原理和技术实现有深刻理解;长期从事海外项目的研发和交付工作,对异地多活数据中心的建设及高可用、高并发系统的设计有丰富的实战经验。




相關書籍

Node.js 應用開發

作者 唐小燕 劉洪武

2022-02-01

Mastering Go: Create Golang production applications using network libraries, concurrency, machine learning, and advanced data structures, 2/e (Paperbcak)

作者 Tsoukalos Mihalis

2022-02-01

大數據運營與管理——數據中心數字化轉型之路

作者 溫柏堅 高偉 彭澤武 萬嬋 楊秋勇

2022-02-01