《大數據處理框架Apache Spark設計與實現(全彩)》由電子工業出版社於2020年8月出版,作者是許利傑,方亞芬。本書採用問題驅動的敘述方式,強調基本原理的闡述,內容紮實,深入Spark底層。
基本介紹
- 書名:大數據處理框架Apache Spark設計與實現(全彩)
- 作者:許利傑、方亞芬
- 類別:計算機
- 出版社:電子工業出版社
- 出版時間:2020年8月
- 頁數:276 頁
- 定價:106 元
- 開本:16 開
- ISBN:9787121391712
內容簡介,圖書目錄,作者簡介,
內容簡介
《大數據處理框架Apache Spark設計與實現(全彩)》以Apache Spark框架為核心,總結了大數據處理框架的基礎知識、核心理論、典型的Spark套用,以及相關的性能和可靠性問題。
圖書目錄
第 1 章大數據處理框架概覽 .....................2
1.1 大數據及其帶來的挑戰 ...................2
1.2 大數據處理框架 ...............................3
1.3 大數據套用及編程模型 ...................4
1.4 大數據處理框架的四層結構 ...........5
1.4.1 用戶層 ......................................... 7
1.4.2 分散式數據並行處理層 ............11
1.4.3 資源管理與任務調度層 ........... 13
1.4.4 物理執行層 ............................... 15
1.5 錯誤容忍機制 .................................17
1.6 其他大數據處理框架 .....................18
1.7 本章小結 .........................................18
1.8 擴展閱讀 .........................................18
第 2 章 Spark 系統部署與套用運行的基本流程.....................................20
2.1 Spark 安裝部署 ..............................20
2.2 Spark 系統架構 ..............................21
2.3 Spark 套用例子 ..............................24
2.3.1 用戶代碼基本邏輯 ................... 24
2.3.2 邏輯處理流程 ........................... 28
2.3.3 物理執行計畫 ........................... 32
2.3.4 可視化執行過程 ....................... 34
2.4 Spark 編程模型 ..............................38
2.5 本章小結 .........................................39
第 3 章 Spark 邏輯處理流程...................41
3.1 Spark 邏輯處理流程概覽 ..............41
3.2 Spark 邏輯處理流程生成方法 ......43
3.2.1 根據應用程式如何產生 RDD,產生什麼樣的 RDD................ 44
3.2.2 如何建立 RDD 之間的數據依賴 關係.......................................... 44
3.2.3 如何計算 RDD 中的數據 ........ 49
3.3 常用 transformation數據操作 ....50
3.4 常用 action數據操作 ..................86
3.5 對比 MapReduce,Spark 的優缺點.................................................98
3.6 本章小結 .........................................99
3.7 擴展閱讀 .......................................100
第 4 章 Spark 物理執行計畫.................101
4.1 Spark 物理執行計畫概覽 ............101
4.2 Spark 物理執行計畫生成方法 ....105
4.3 常用數據操作生成的物理執行計畫...............................................113
4.4 本章小結 .......................................121
4.5 擴展閱讀 .......................................121
第 5 章疊代型 Spark 套用 ....................123
5.1 疊代型 Spark 套用的分類及特點...............................................123
5.2 疊代型機器學習套用 SparkLR ...124
5.2.1 套用描述 ................................ 124
5.2.2 算法原理 ................................ 125
5.2.3 基於 Spark 的並行化實現 ..... 129
5.2.4 深入討論 ................................. 131
5.3 疊代型機器學習套用——廣義線性模型.......................................132
5.3.1 算法原理 ................................. 132
5.3.2 基於 Spark 的並行化實現 ..... 136
5.3.3 深入討論 ................................. 139
5.4 疊代型圖計算套用——PageRank ......................................140
5.4.1 套用描述 ................................. 140
5.4.2 基於 Spark 的並行化實現 ..... 143
5.4.3 深入討論 ................................. 149
5.5 本章小結 .......................................151
第 6 章 Shuffle 機制..............................153
6.1 Shuffle 的意義及設計挑戰 ..........153
6.2 Shuffle 的設計思想 ......................155
6.2.1 解決數據分區和數據聚合問題 ........................................ 156
6.2.2 解決 map端 combine問題 ........................................ 158
6.2.3 解決 sort 問題......................... 158
6.2.4 解決記憶體不足問題 ................. 159
6.3 Spark 中 Shuffle 框架的設計 .......160
6.3.1 Shuffle Write 框架設計和實現 ........................................ 161
6.3.2 Shuffle Read 框架設計和實現 ........................................ 166
6.4 支持高效聚合和排序的數據結構...............................................170
6.4.1 AppendOnlyMap 的原理 ........ 171
6.4.2 ExternalAppendOnlyMap ...... 173
6.4.3 PartitionedAppendOnlyMap ... 176
6.4.4 PartitionedPairBuffer ..............176
6.5 與 Hadoop MapReduce 的 Shuffle 機制對比.......................................177
6.6 本章小結 .......................................179
第 7 章數據快取機制 ...........................180
7.1 數據快取的意義 ...........................180
7.2 數據快取機制的設計原理 ...........181
7.2.1 決定哪些數據需要被快取 ..... 181
7.2.2 包含數據快取操作的邏輯處理流程和物理執行計畫 .... 184
7.2.3 快取級別 ................................. 186
7.2.4 快取數據的寫入方法 ............. 189
7.2.5 快取數據的讀取方法 ............. 191
7.2.6 用戶接口的設計 ..................... 192
7.2.7 快取數據的替換與回收方法 ........................................ 193
7.3 與 Hadoop MapReduce 的快取機制進行對比...............................197
7.4 本章小結 .......................................198
第 8 章錯誤容忍機制 ...........................199
8.1 錯誤容忍機制的意義及挑戰 .......199
8.2 錯誤容忍機制的設計思想 ...........201
8.3 重新計算機制 ...............................201
8.3.1 重新計算是否能夠得到與之前一樣的結果 ............................ 202
8.3.2 從哪裡開始重新計算 ............. 204
8.3.3 重新計算機制小結 ................. 207
8.4 checkpoint 機制的設計與實現 ....207
8.4.1 哪些數據需要使用 checkpoint機制........................................ 207
8.4.2 checkpoint 數據的寫入及接口 ........................................ 210
8.4.3 checkpoint 時機及計算順序 ... 212
8.4.4 checkpoint 數據的讀取 .......... 213
8.4.5 checkpoint 數據寫入和讀取的實現細節 ................................ 213
8.4.6 checkpoint 語句位置的影響.... 216
8.4.7 cache + checkpoint ..................220
8.5 checkpoint 與數據快取的區別 ....225
8.6 本章小結 .......................................226
第 9 章記憶體管理機制 ...........................227
9.1 記憶體管理機制問題及挑戰 ...........227
9.2 套用記憶體消耗來源及影響因素 ...228
9.2.1 記憶體消耗來源 1:用戶代碼 .... 229
9.2.2 記憶體消耗來源 2:Shuffle 機制中產生的中間數據 ................ 230
9.2.3 記憶體消耗來源 3:快取數據 .... 231
9.3 Spark 框架記憶體管理模型 ............232
9.3.1 靜態記憶體管理模型 ................. 233
9.3.2 統一記憶體管理模型 ................. 234
9.4 Spark 框架執行記憶體消耗與管理...............................................237
9.4.1 Shuffle Write 階段記憶體消耗及管理 ........................................ 239
9.4.2 Shuffle Read 階段記憶體消耗及管理 ........................................ 245
9.5 數據快取空間管理 .......................249
9.5.1 RDD 快取數據 ....................... 250
9.5.2 廣播數據 ................................. 253
9.5.3 task 的計算結果 ..................... 254
9.6 本章小結 .......................................256
參考文獻.................................................258
作者簡介
許利傑
現任中國科學院軟體研究所副研究員、碩士生導師,於中科院軟體所獲得博士學位。當前主要從事大數據系統方面的研究工作,已在國際會議如VLDB、ICDCS、IPDPS、ISSRE、ICAC等發表論文10餘篇,主持多項國家自然科學基金,以及華為、京東、聯想等企業的合作研發項目。
曾為Apache Spark和Hadoop修復多個核心代碼嚴重錯誤,編寫的SparkInternals技術文檔被社區廣泛關注,獲得四千多顆星。
博士期間曾在微軟亞洲研究院、阿里巴巴、騰訊擔任客座研究學生。還擔任中國計算機學會系統軟體專委會委員、中國科學院青年創新促進會會員。
方亞芬
現任中國科學院軟體研究所工程師,於南開大學獲得學士學位、中科院軟體所獲得碩士學位。
當前主要從事大數據系統、作業系統方面的研發工作,參與多項國家自然科學基金、國家重點研發計畫,以及華為、騰訊、中國郵政等企業的合作研發項目。
曾在阿里巴巴等擔任客座研究學生,是華為openEuler社區樹莓派項目負責人。