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