1. 程式人生 > >2018年新春報喜!熱烈祝賀王家林大咖大資料經典傳奇著作《SPARK大資料商業實戰三部曲》 暢銷書籍 清華大學出版社發行上市!

2018年新春報喜!熱烈祝賀王家林大咖大資料經典傳奇著作《SPARK大資料商業實戰三部曲》 暢銷書籍 清華大學出版社發行上市!

2018年新春報喜!熱烈祝賀王家林大咖大資料經典傳奇著作《SPARK大資料商業實戰三部曲》暢銷書籍 清華大學出版社發行上市!

本書基於Spark 2.2.0最新版本(2017年7月11日釋出),以Spark商業案例實戰和Spark在生產環境下幾乎所有型別的效能調優為核心,以Spark核心解密為基石,分為上篇、中篇、下篇,對企業生產環境下的Spark商業案例與效能調優抽絲剝繭地進行剖析。上篇基於Spark原始碼,從一個動手實戰案例入手,循序漸進地全面解析了Spark 2.2新特性及Spark核心原始碼;中篇選取Spark開發中最具有代表的經典學習案例,深入淺出地介紹,在案例中綜合應用Spark的大資料技術;下篇效能調優內容基本完全覆蓋了Spark在生產環境下的所有調優技術。

本書適合所有Spark學習者和從業人員使用。對於有分散式計算框架應用經驗的人員,本書也可以作為Spark高手修煉的參考書籍。同時,本書也特別適合作為高等院校的大資料教材使用。

清華大學出版社官方旗艦店(天貓)、京東、噹噹網、亞馬遜等網店已可購買!歡迎大家購買學習!

清華大學出版社官方旗艦店(天貓) 點選開啟連結

目    錄

上篇  核心解密

第1章 電光石火間體驗Spark 2.2開發實戰... 2

1.1  通過RDD實戰電影點評系統入門及原始碼閱讀... 2

1.1.1  Spark核心概念圖解... 2

1.1.2通過RDD實戰電影點評系統案例... 4

1.2  通過DataFrameDataSet

實戰電影點評系統... 7

1.2.1通過DataFrame實戰電影點評系統案例... 7

1.2.2通過DataSet實戰電影點評系統案例... 10

1.3  Spark 2.2原始碼閱讀環境搭建及原始碼閱讀體驗... 11

第2章 Spark 2.2技術及原理... 14

2.1  Spark 2.2綜述... 14

2.1.1連續應用程式... 14

2.1.2新的API 15

2.2  Spark 2.2 Core. 16

2.2.1第二代Tungsten引擎... 16

2.2.2  SparkSession. 16

2.2.3累加器API 17

2.3  Spark 2.2 SQL. 19

2.3.1  Spark SQL.

20

2.3.2  DataFrameDatasetAPI 20

2.3.3  Timed Window.. 21

2.4  Spark 2.2 Streaming. 21

2.4.1  StructuredStreaming. 21

2.4.2增量輸出模式... 23

2.5  Spark 2.2 MLlib. 27

2.5.1基於DataFrameMachineLearning API 28

2.5.2  R的分散式演算法... 28

2.6  Spark 2.2 GraphX.. 29

第3章 Spark的靈魂:RDD和DataSet30

3.1  為什麼說RDDDateSetSpark的靈魂... 30

3.1.1  RDD的定義及五大特性剖析... 30

3.1.2  DateSet的定義及內部機制剖析... 34

3.2  RDD彈性特性七個方面解析... 36

3.3  RDD依賴關係... 43

3.3.1窄依賴解析... 43

3.3.2寬依賴解析... 45

3.4  解析Spark中的DAG邏輯檢視... 46

3.4.1  DAG生成的機制... 46

3.4.2  DAG邏輯檢視解析... 47

3.5  RDD內部的計算機制... 49

3.5.1  Task解析... 49

3.5.2計算過程深度解析... 49

3.6  Spark RDD容錯原理及其四大核心要點解析... 57

3.6.1  Spark RDD容錯原理... 57

3.6.2  RDD容錯的四大核心要點... 57

3.7  Spark RDDRuntime流程解析... 59

3.7.1  Runtime架構圖... 59

3.7.2生命週期... 60

3.8  通過WordCount實戰解析Spark RDD內部機制... 70

3.8.1  Spark WordCount動手實踐... 70

3.8.2解析RDD生成的內部機制... 72

3.9  基於DataSet的程式碼到底是如何一步步轉化成為RDD... 78

第4章 Spark Driver啟動內幕剖析... 81

4.1  Spark Driver Program剖析... 81

4.1.1  Spark DriverProgram.. 81

4.1.2  SparkContext深度剖析... 81

4.1.3  SparkContext原始碼解析... 82

4.2  DAGScheduler解析... 96

4.2.1  DAG的定義... 96

4.2.2  DAG的例項化... 97

4.2.3  DAGScheduler劃分Stage的原理... 98

4.2.4  DAGScheduler劃分Stage的具體演算法... 99

4.2.5  Stage內部Task獲取最佳位置的演算法... 113

4.3  TaskScheduler解析... 116

4.3.1  TaskScheduler原理剖析... 116

4.3.2  TaskScheduler原始碼解析... 117

4.4  SchedulerBackend解析... 132

4.4.1  SchedulerBackend原理剖析... 132

4.4.2  SchedulerBackend原始碼解析... 132

4.4.3  Spark程式的註冊機制... 133

4.4.4  Spark程式對計算資源Executor的管理... 134

4.5  打通Spark系統執行內幕機制迴圈流程... 135

4.6  本章總結... 145

第5章 Spark叢集啟動原理和原始碼詳解... 146

5.1  Master啟動原理和原始碼... 146

5.1.1  Master啟動的原理詳解... 146

5.1.2  Master啟動的原始碼詳解... 147

5.1.3  Master HA雙機切換... 157

5.1.4  Master的註冊機制和狀態管理解密... 163

5.2  Worker啟動原理和原始碼詳解... 170

5.2.1  Worker啟動原理流程... 170

5.2.2  Worker啟動原始碼詳解... 174

5.3  ExecutorBackend啟動原理和原始碼詳解... 178

5.3.1  ExecutorBackend介面與Executor的關係... 178

5.3.2  ExecutorBackend的不同實現... 179

5.3.3  ExecutorBackend中的通訊... 181

5.3.4  ExecutorBackend的異常處理... 183

5.4  Executor中任務的執行... 184

5.4.1  Executor中任務的載入... 184

5.4.2  Executor中的任務執行緒池... 185

5.4.3任務執行失敗處理... 186

5.4.4揭祕TaskRunner 188

5.5  Executor執行結果的處理方式... 189

5.6  本章總結... 197

第6章 Spark Application提交給叢集的原理和原始碼詳解... 198

6.1  Spark Application到底是如何提交給叢集的... 198

6.1.1  Application提交引數配置詳解... 198

6.1.2  Application提交給叢集原理詳解... 199

6.1.3  Application提交給叢集原始碼詳解... 201

6.2  Spark Application是如何向叢集申請資源的... 211

6.2.1  Application申請資源的兩種型別詳解... 211

6.2.2  Application申請資源的原始碼詳解... 213

6.3  Application提交的角度重新審視Driver219

6.3.1  Driver到底是什麼時候產生的... 220

6.3.2  DriverMaster互動原理解析... 238

6.3.3  DriverMaster互動原始碼詳解... 244

6.4  Application提交的角度重新審視Executor249

6.4.1  Executor到底是什麼時候啟動的... 249

6.4.2  Executor如何把結果交給Application. 254

6.5  Spark 1.6 RPC內幕解密:執行機制、原始碼詳解、NettyAkka... 254

6.6  本章總結... 267

第7章 Shuffle原理和原始碼詳解... 268

7.1  概述... 268

7.2  Shuffle的框架... 269

7.2.1  Shuffle的框架演進... 269

7.2.2  Shuffle的框架核心... 270

7.2.3  Shuffle框架的原始碼解析... 272

7.2.4  Shuffle資料讀寫的原始碼解析... 275

7.3  Hash Based Shuffle. 281

7.3.1概述... 281

7.3.2  Hash Based Shuffle核心... 282

7.3.3  Hash Based Shuffle的資料讀寫的原始碼解析... 285

7.4Sorted Based Shuffle. 290

7.4.1概述... 292

7.4.2  Sorted BasedShuffle核心... 293

7.4.3  Sorted BasedShuffle資料讀寫的原始碼解析... 294

7.5  Tungsten Sorted Based Shuffle. 302

7.5.1概述... 302

7.5.2  Tungsten SortedBased核心... 302

7.5.3  Tungsten SortedBased資料讀寫的原始碼解析... 303

7.6  Shuffle Storage 模組間的互動... 309

7.6.1  Shuffle 註冊的互動... 310

7.6.2  Shuffle寫資料的互動... 314

7.6.3  Shuffle 讀資料的互動... 315

7.6.4  BlockManager架構原理、執行流程圖和原始碼解密... 315

7.6.5  BlockManager解密進階:BlockManager初始化和註冊解密、BlockManager- Master工作解密、BlockTransferService解密、本地資料讀寫解密、遠端資料讀寫解密... 324

7.7  本章總結... 341

第8章 Job工作原理和原始碼詳解... 342

8.1Job到底在什麼時候產生... 342

8.1.1觸發Job的原理和原始碼解析... 342

8.1.2觸發Job的運算元案例... 344

8.2  Stage劃分內幕... 345

8.2.1Stage劃分原理詳解... 345

8.2.2  Stage劃分原始碼詳解... 346

8.3  Task全生命週期詳解... 346

8.3.1Task的生過程詳解... 347

8.3.2 TaskDriverExecutor中互動的全生命週期原理和原始碼詳解... 348

8.4  ShuffleMapTaskResultTask處理結果是如何被Driver管理的... 364

8.4.1ShuffleMapTask執行結果和Driver的互動原理及原始碼... 364

8.4.2 ResultTask執行結果與Driver的互動原理及原始碼詳解... 370

第9章 Spark中Cache和checkpoint原理和原始碼詳解... 372

9.1  SparkCache原理和原始碼詳解... 372

9.1.1  SparkCache原理詳解... 372

9.1.2  SparkCache原始碼詳解... 372

9.2  Sparkcheckpoint原理和原始碼詳解... 381

9.2.1  Sparkcheckpoint原理詳解... 381

9.2.2  Sparkcheckpoint原始碼詳解... 381

第10章 Spark中Broadcast和Accumulator原理和原始碼詳解... 391

10.1  SparkBroadcast原理和原始碼詳解... 391

10.1.1  SparkBroadcast原理詳解... 391

10.1.2  SparkBroadcast原始碼詳解... 393

10.2 SparkAccumulator原理和原始碼詳解... 396

10.2.1  SparkAccumulator原理詳解... 396

10.2.2  SparkAccumulator原始碼詳解... 396

第11章 Spark與大資料其他經典元件整合原理與實戰... 399

11.1 Spark元件綜合應用... 399

11.2  SparkAlluxio整合原理與實戰... 400

11.2.1  SparkAlluxio整合原理... 400

11.2.2  SparkAlluxio整合實戰... 401

11.3  SparkJob Server整合原理與實戰... 403

11.3.1  SparkJobServer整合原理... 403

11.3.2  SparkJobServer整合實戰... 404

11.4  SparkRedis整合原理與實戰... 406

11.4.1  SparkRedis整合原理... 406

11.4.2  SparkRedis整合實戰... 407

中篇  商業案例

第12章 Spark商業案例之大資料電影點評系統應用案例... 412

12.1  通過RDD實現分析電影的使用者行為資訊... 412

12.1.1搭建IDEA開發環境... 412

12.1.2大資料電影點評系統中電影資料說明... 426

12.1.3電影點評系統使用者行為分析統計實戰... 429

12.2  通過RDD實現電影流行度分析... 432

12.3  通過RDD分析各種型別的最喜愛電影TopN及效能優化技巧... 434

12.4  通過RDD分析電影點評系統仿QQ和微信等使用者群分析及廣播背後機制解密... 437

12.5  通過RDD分析電影點評系統實現JavaScala版本的二次排序系統... 441

12.5.1二次排序自定義Key值類實現(Java... 441

12.5.2電影點評系統二次排序功能實現(Java... 444

12.5.3二次排序自定義Key值類實現(Scala... 446

12.5.4電影點評系統二次排序功能實現(Scala... 447

12.6  通過Spark SQL中的SQL語句實現電影點評系統使用者行為分析... 448

12.7  通過Spark SQL下的兩種不同方式實現口碑最佳電影分析... 452

12.8  通過Spark SQL下的兩種不同方式實現最流行電影分析... 457

12.9  通過DataFrame分析最受男性和女性喜愛電影TopN.. 459

12.10  純粹通過DataFrame分析電影點評系統仿QQ和微信、淘寶等使用者群... 461

12.11  純粹通過DataSet對電影點評系統進行流行度和不同年齡階段興趣分析等... 463

12.11.1通過DataSet實現某特定電影觀看者中男性和女性不同年齡的人數... 464

12.11.2通過純粹使用DataSet方式計算所有電影中平均得分最高(口碑最好)的電影TopN.. 465

12.11.3通過DataSet方式計算所有電影中粉絲或者觀看人數最多(最流行電影)的電影TopN   466

12.11.4純粹使用DataSet實現所有電影中最受男性、女性喜愛的電影Top10. 467

12.11.5純粹通過DataSet的方式實現所有電影中QQ或者微信核心目標使用者最喜愛電影TopN分析... 468

12.11.6純粹通過DataSet的方式實現所有電影中淘寶核心目標使用者最喜愛電影TopN分析470

12.12  大資料電影點評系統應用案例涉及的核心知識點原理、原始碼及案例程式碼... 471

12.12.1知識點:廣播變數Broadcast內幕機制... 472

12.12.2知識點:SQL全域性臨時檢視及臨時檢視... 475

12.12.3大資料電影點評系統應用案例完整程式碼... 476

12.13  本章總結... 498

第13章 Spark 2.2實戰之Dataset開發實戰企業人員管理系統應用案例... 498

13.1  企業人員管理系統應用案例業務需求分析... 498

13.2  企業人員管理系統應用案例資料建模... 499

13.3  通過SparkSession建立案例開發實戰上下文環境... 500

13.3.1  Spark 1.6.0版本SparkContext 500

13.3.2  Spark 2.0.0版本SparkSession. 501

13.3.3  DataFrameDataSet剖析與實戰... 507

13.4  通過mapflatMapmapPartitions實戰分析企業人員管理系統... 510

13.5  通過dropDuplicatecoalescerepartition等分析企業人員管理系統... 512

13.6  通過sortjoinjoinWith等分析企業人員管理系統... 514

13.7  通過randomSplitsampleselect等分析企業人員管理系統... 515

13.8  通過groupByaggcol等分析企業人員管理系統... 517

13.9  通過collect_listcollect_set等分析企業人員管理系統... 518

13.10  通過avgsumcountDistinct等分析企業人員管理系統... 519

13.11  Dataset開發實戰企業人員管理系統應用案例程式碼... 519

13.12  本章總結... 522

第14章 Spark商業案例之電商互動式分析系統應用案例... 523

14.1  純粹通過DataSet進行電商互動式分析系統中特定時段訪問次數TopN.. 523

14.1.1電商互動式分析系統資料說明... 523

14.1.2特定時間段內使用者訪問電商網站排名TopN.. 525

14.2  純粹通過DataSet分析特定時段購買金額Top10和訪問次數增長Top10. 527

14.3  純粹通過DataSet進行電商互動式分析系統中各種型別TopN分析實戰詳解... 530

14.3.1統計特定時段購買金額最多的Top5使用者... 530

14.3.2統計特定時段訪問次數增長最多的Top5使用者... 530

14.3.3統計特定時段購買金額增長最多的Top 5使用者... 531

14.3.4統計特定時段註冊之後前兩週內訪問最多的Top 10使用者... 533

14.3.5統計特定時段註冊之後前兩週內購買總額最多的Top 10使用者... 534

14.4  電商互動式分析系統應用案例涉及的核心知識點原理、原始碼及案例程式碼... 535

14.4.1知識點:Functions.scala. 535

14.4.2電商互動式分析系統應用案例完整程式碼... 548

14.5  本章總結... 555

第15章 Spark商業案例之NBA籃球運動員大資料分析系統應用案例... 556

15.1  NBA籃球運動員大資料分析系統架構和實現思路... 556

NBA籃球運動員大資料分析系統應用資料說明如下。... 557

15.2  NBA籃球運動員大資料分析系統程式碼實戰:資料清洗和初步處理... 561

15.3  NBA籃球運動員大資料分析程式碼實戰之核心基礎資料項編寫... 565

15.3.1  NBA球員資料每年基礎資料項記錄... 565

15.3.2  NBA球員資料每年標準分Z-Score計算... 567

15.3.3  NBA球員資料每年歸一化計算... 568

15.3.4  NBA歷年比賽資料按球員分組統計分析... 572

15.3.5  NBA球員年齡值及經驗值列表獲取... 575

15.3.6  NBA球員年齡值及經驗值統計分析... 576

15.3.7  NBA球員系統內部定義的函式、輔助工具類... 578

15.4  NBA籃球運動員大資料分析完整程式碼測試和實戰... 582

15.5  NBA籃球運動員大資料分析系統應用案例涉及的核心知識點、原理、原始碼... 594

15.5.1知識點:StatCounter原始碼分析... 594

15.5.2知識點:StatCounter應用案例... 598

15.6  本章總結... 601

第16章 電商廣告點選大資料實時流處理系統案例... 602

16.1  電商廣告點選綜合案例需求分析和技術架構... 602

16.1.1電商廣告點選綜合案例需求分析