Spark性能優化實戰
謝雪葵
買這商品的人也買了...
-
$301Vim 實用技巧, 2/e (Practical Vim : Edit Text at the Speed of Thought, 2/e)
-
$400$316 -
$455高效制勝 -- 程序員面試典型題解 (全彩印刷)
-
$704$662 -
$505分佈式數據庫原理、架構與實踐
-
$536架構設計 2.0:大型分佈式系統架構方法論與實踐
-
$734掌握分佈式跟蹤:微服務和復雜系統性能分析
-
$520$390 -
$880$695 -
$580$458 -
$507算法設計與分析 — 基於計算教學論的解析
-
$620$409 -
$599$569 -
$356AIGC革命:Web 3.0時代的新一波科技浪潮
-
$352二進制安全基礎
-
$1,280$1,011 -
$1,200$948 -
$580$458 -
$880$695 -
$800$600 -
$828$787 -
$654$621 -
$850$638 -
$954$906 -
$680$530
相關主題
商品描述
《Spark性能優化實戰:突破性能瓶頸,遨游數據重洋》全面、系統、深入地介紹Apache Spark性能優化的相關技術和策略,涵蓋從Spark性能優化的基礎知識到核心技術,再到應用實踐的方方面面。本書不但系統地介紹各種監控工具的使用,而且還結合實戰案例,詳細介紹Spark性能優化的各種經驗和技巧,提升讀者的實際應用技能。 《Spark性能優化實戰:突破性能瓶頸,遨游數據重洋》共8章。第1章從性能優化的基本概念出發,介紹Spark的基礎知識,並介紹如何進行性能優化;第2章介紹Spark性能優化的幾個方面,包括程序設計優化、資源優化、網絡通信優化和數據讀寫優化等;第3章深入介紹Spark任務執行過程優化;第4章介紹Spark SQL性能優化;第5章結合實戰案例全面解析Spark性能優化的核心技術與應用;第6章詳細介紹不同應用場景的性能優化策略;第7章介紹Spark集成Hadoop、Kafka和Elasticsearch使用時的性能優化,從而提供更實用的Spark性能提升方案;第8章介紹Spark應用程序開發與優化,以及集群管理實踐。 《Spark性能優化實戰:突破性能瓶頸,遨游數據重洋》內容豐富,講解深入淺出,適合Apache Spark開發人員、數據工程師和數據科學家閱讀,也適合需要處理大規模數據集和對Spark性能優化感興趣的技術人員閱讀,還可作為高等院校大數據專業的教材和相關培訓機構的教學用書。
目錄大綱
目 錄
第1章 性能優化基礎 1
1.1 Spark簡介 1
1.2 什麽是Spark性能優化 1
1.3 Spark應用程序性能指標 2
1.4 自帶的Spark Web UI 5
1.4.1 Jobs模塊 6
1.4.2 Stages模塊 12
1.4.3 Storage模塊 16
1.4.4 Environment模塊 17
1.4.5 Executors模塊 18
1.4.6 SQL模塊 19
1.5 自帶的Spark歷史服務器 21
1.5.1 Spark歷史服務器簡介 21
1.5.2 配置、啟動和訪問Spark
歷史服務器 22
1.6 Spark事件日誌 23
1.6.1 Spark的常見事件 23
1.6.2 事件信息 24
1.6.3 Spark啟動事件分析案例 24
1.6.4 Spark事件日誌的用途 25
1.6.5 CPU密集型與內存密集型
分析案例 26
1.7 Spark驅動程序日誌 27
1.8 Spark Executor日誌 28
1.8.1 Spark Executor日誌簡介 28
1.8.2 日誌解析 28
1.8.3 配置Executor打印日誌到
Driver節點 29
1.8.4 使用Executor完成時間異常
分析案例 30
1.9 Linux系統監控工具 31
1.9.1 top命令 31
1.9.2 htop命令 32
1.9.3 iostat命令 32
1.9.4 vmstat命令 34
1.9.5 sar命令 35
1.9.6 Spark進程的CPU和內存
監控案例 35
1.10 JVM監控工具 36
1.10.1 JConsole監控工具 37
1.10.2 JVisualVM監控工具 38
1.10.3 使用JVisualVM定位內存
泄漏案例 41
1.11 第三方工具Prometheus 42
1.11.1 Prometheus簡介 42
1.11.2 Prometheus架構的
工作原理 42
1.11.3 安裝Prometheus 43
1.11.4 使用Prometheus Web UI 46
1.11.5 基於PromQL磁盤的多維度
分析案例 47
1.12 第三方工具Grafana 48
1.12.1 Grafana簡介 48
1.12.2 安裝Grafana 48
1.12.3 數據源和儀表盤 49
1.12.4 在Grafana中創建查詢和
可視化 52
1.12.5 監控分析Spark指標案例 55
1.13 Spark性能測試與驗證 56
1.13.1 性能測試之基準測試 56
1.13.2 性能測試之壓力測試 57
1.13.3 性能測試之資源測試 59
1.13.4 性能測試之基準優化測試 61
1.13.5 獲取測試數據 62
1.13.6 使用Spark MLlib生成電商網站
測試數據案例 64
1.13.7 性能測試工具SparkPerf 65
1.13.8 性能測試工具HiBench 68
1.13.9 ScalaCheck檢查屬性案例 70
1.13.10 準確性驗證之單元測試 71
1.13.11 準確性驗證之集成測試 73
1.13.12 準確性驗證之作業驗證 75
1.14 Spark執行計劃 77
1.14.1 Spark執行計劃簡介 77
1.14.2 Spark執行計劃的生成
過程 78
1.14.3 執行計劃中的邏輯計劃 80
1.14.4 執行計劃中的物理計劃 84
1.14.5 Spark鎢絲計劃Tungsten 89
1.14.6 Spark階段劃分和
任務劃分 90
1.14.7 Spark執行計劃的優化和
調試 91
1.14.8 Spark執行計劃的可視化 92
1.14.9 Shuffle性能瓶頸識別案例 93
1.15 Spark任務性能瓶頸的定位 94
1.15.1 性能瓶頸的定義和識別性能
瓶頸的意義 95
1.15.2 數據傾斜引發的性能問題 96
1.15.3 數據本地性問題 98
1.15.4 網絡瓶頸問題 100
1.15.5 內存管理問題 102
1.15.6 垃圾回收問題 104
1.15.7 Spark長時任務性能瓶頸
定位案例 105
第2章 Spark應用程序性能優化 107
2.1 程序設計優化 107
2.1.1 數據模型策略優化 107
2.1.2 緩存策略優化 108
2.1.3 廣播變量策略優化 109
2.1.4 累加器策略優化 111
2.1.5 函數式編程策略優化 113
2.1.6 全局變量策略優化 115
2.1.7 程序設計優化綜合案例 116
2.2 資源優化 118
2.2.1 Spark資源管理的重要性 118
2.2.2 Spark內存管理的
優化技巧 119
2.2.3 Spark中的CPU優化技巧 123
2.2.4 Spark磁盤管理的
優化技巧 125
2.2.5 Spark Shuffle分配的
優化技巧 125
2.2.6 Spark並行度與資源分配的
平衡 127
2.2.7 Spark分區策略優化 129
2.2.8 Spark內存溢出的
應對策略 130
2.2.9 Spark Shuffle分配優化
案例 131
2.3 網絡通信優化 133
2.3.1 網絡通信架構和組件 133
2.3.2 網絡通信協議和數據
傳輸方式 134
2.3.3 數據壓縮策略 135
2.3.4 序列化策略 137
2.3.5 網絡緩存策略 139
2.3.6 I/O優化策略 140
2.3.7 帶寬限制和網絡擁塞控制 141
2.3.8 數據本地性優化策略 142
2.3.9 網絡安全和認證優化 143
2.3.10 進程本地化優化案例 144
2.4 數據讀寫優化 147
2.4.1 數據讀取的優化技巧 147
2.4.2 數據寫入的優化技巧 147
2.4.3 過濾數據的讀取優化 148
2.4.4 分區讀取數據的優化 149
2.4.5 批量寫入數據的優化 150
2.4.6 並行寫入數據的優化 152
2.4.7 列存儲數據的讀取優化 153
2.4.8 數據預處理優化技巧 154
2.4.9 數據存儲位置優化技巧 154
2.4.10 內存和磁盤數據緩存
優化技巧 155
2.4.11 數據格式優化技巧 156
2.4.12 轉換方式優化技巧 157
2.4.13 索引數據讀取優化技巧 159
2.4.14 數據讀寫錯誤的處理和
容錯技巧 160
2.4.15 Alluxio的使用 162
2.4.16 利用壓縮數據減少傳輸量
案例 166
第3章 Spark任務執行過程優化 169
3.1 調度優化 169
3.1.1 資源管理器的基本原理 169
3.1.2 理解Spark資源管理器 171
3.1.3 資源分配策略 174
3.1.4 資源調度算法 176
3.1.5 集群資源池化技術 180
3.1.6 Docker容器 182
3.1.7 基於YARN的資源管理 184
3.1.8 基於Mesos的資源管理 188
3.1.9 基於Kubernetes的資源
管理 190
3.1.10 Spark資源利用率和性能
優化案例 204
3.2 任務執行器優化 206
3.2.1 Spark任務執行器組件簡介 206
3.2.2 Spark任務執行器的線程池
配置優化 210
3.2.3 Spark任務執行器的JVM參數
配置優化 211
3.2.4 Spark任務執行器的堆內存
配置優化 213
3.2.5 Spark任務執行器的直接內存
配置優化 215
3.2.6 Spark任務執行器的內存分配
方式優化 216
3.2.7 Spark任務執行器的GC策略
配置優化 218
3.2.8 Spark任務執行器的資源隔離
配置優化 219
3.2.9 Spark任務執行器的容錯機制
優化 220
3.2.10 Spark任務線程池的並行度
提升和吞吐量增強案例 221
第4章 Spark SQL性能優化 223
4.1 常用的查詢優化 223
4.1.1 謂詞下推 223
4.1.2 窄依賴 224
4.1.3 聚合查詢優化 224
4.1.4 Join查詢優化 226
4.1.5 子查詢優化 227
4.1.6 聯合查詢優化 228
4.1.7 窗口函數優化 229
4.1.8 排序查詢優化 232
4.1.9 內置函數優化 232
4.1.10 Union連接優化 233
4.1.11 表設計優化 233
4.1.12 使用窗口函數實現高效的
分組統計案例 234
4.2 Spark 3.0的新特性 236
4.2.1 AQE的自動分區合並 236
4.2.2 AQE的自動傾斜處理 238
4.2.3 AQE的Join策略調整 239
4.2.4 DPP動態分區剪裁 240
4.2.5 Join Hints的使用技巧 241
4.2.6 使用Join Hints解決數據傾斜
案例 244
4.3 Spark SQL數據傾斜優化 245
4.3.1 廣播變量 245
4.3.2 採樣 246
4.3.3 手動指定Shuffle分區數 248
4.3.4 隨機前綴和哈希 249
4.3.5 使用Map Join方法 251
4.3.6 預先聚合 253
4.3.7 排序 255
4.3.8 動態重分區 257
4.3.9 手動實現動態重分區案例 258
4.4 特定場景優化 259
4.4.1 大表連接小表 259
4.4.2 大表連接大表 262
4.4.3 窗口函數優化 265
4.4.4 復雜邏輯和函數調用優化 268
4.4.5 多表關聯查詢優化 270
4.4.6 寬表查詢優化 272
4.4.7 使用兩階段Shuffle解決傾斜
大表關聯案例 272
第5章 Spark性能優化
案例分析 281
5.1 基於Spark的短視頻推薦系統
性能優化 281
5.1.1 短視頻推薦系統概述 281
5.1.2 將Spark作為短視頻推薦系統的
計算框架 285
5.1.3 客戶端Push業務 287
5.1.4 Model_Server大寬表 288
5.1.5 推薦請求表ETL的優化 289
5.1.6 Model_Server大寬表的
優化 294
5.1.7 案例總結 296
5.2 基於Spark的航空數據分析系統性能
優化 297
5.2.1 系統概述 297
5.2.2 性能評估與瓶頸分析 299
5.2.3 數據分區與存儲優化 300
5.2.4 任務調度與資源管理 301
5.2.5 數據預處理與轉換優化 302
5.2.6 查詢優化與性能優化 304
5.2.7 並行計算與調度優化 305
5.2.8 監控與優化策略 306
第6章 不同場景的Spark性能
優化 309
6.1 批處理模式的優化策略 309
6.1.1 數據傾斜優化之預聚合 309
6.1.2 數據傾斜優化之鍵值對
重分區 313
6.1.3 數據傾斜優化之調整分區
數量 314
6.1.4 數據傾斜優化之廣播變量 316
6.1.5 數據傾斜優化之動態調整分區
大小 317
6.1.6 數據傾斜優化之使用Map Join
方法 318
6.1.7 數據傾斜優化之隨機前綴和
擴容RDD 319
6.1.8 數據傾斜優化之採樣傾斜
key 320
6.1.9 數據傾斜優化之過濾特定
數據 322
6.1.10 數據傾斜優化之組合策略 323
6.1.11 基於內存的Shuffle操作
優化 324
6.1.12 基於Sort的Shuffle操作
優化 325
6.1.13 基於壓縮和序列化的Shuffle
操作優化 326
6.1.14 基於增量式的Shuffle
操作優化 326
6.2 流式處理場景的優化策略 327
6.2.1 批處理間隔優化 327
6.2.2 狀態管理優化 328
6.2.3 窗口操作優化 329
6.3 機器學習場景的優化策略 330
6.3.1 模型訓練優化 330
6.3.2 特徵工程優化 331
第7章 Spark集成其他技術的
性能優化 333
7.1 Spark與Hadoop整合優化 333
7.1.1 數據讀寫優化 333
7.1.2 數據存儲優化 334
7.2 Spark與Kafka整合優化 336
7.2.1 數據讀寫優化 336
7.2.2 數據處理優化 337
7.3 Spark與Elasticsearch的整合優化 339
7.3.1 數據寫入和索引優化 340
7.3.2 數據查詢和性能優化 341
第8章 Spark性能優化實踐 344
8.1 Spark應用程序開發建議 344
8.1.1 代碼規範 344
8.1.2 數據分析 346
8.1.3 數據處理 348
8.2 Spark應用程序優化建議 349
8.2.1 數據壓縮 349
8.2.2 合理使用緩存 350
8.2.3 Shuffle操作 351
8.3 Spark集群管理的優化建議 352
8.3.1 資源管理 352
8.3.2 任務調度 353
8.3.3 故障處理 354
結束語 356
Spark性能優化實戰:突破性能瓶頸,遨游數據重洋
目錄
·VIII·
·IX·