Spark大數據商業實戰三部麯:內核解密 商業案例 性能調優

Spark大數據商業實戰三部麯:內核解密 商業案例 性能調優 pdf epub mobi txt 电子书 下载 2025

王傢林,段智華,夏陽 著
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302489627
版次:1
商品编码:12313678
包装:平装
开本:16开
出版时间:2018-01-01
用纸:胶版纸
页数:1143
字数:1815000
正文语种:中文

具体描述

産品特色

編輯推薦

  基於*新的Spark2.2.X版本,分為內核解密篇,商業案例篇,性能調優篇,共31章,學習過程中有任何疑問,可加入QQ群,有專業人員答疑解惑。

內容簡介

  《Spark大數據商業實戰三部麯:內核解密|商業案例|性能調優》基於Spark 2.2.X,以Spark商業案例實戰和Spark在生産環境下幾乎所有類型的性能調優為核心,以Spark內核解密為基石,分為上篇、中篇、下篇,對企業生産環境下的Spark商業案例與性能調優抽絲剝繭地進行剖析。上篇基於Spark源碼,從一個動手實戰案例入手,循序漸進地全麵解析瞭Spark 2.2新特性及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 通過DataFrame和DataSet實戰電影點評係統 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 DataFrame和Dataset API 20
2.3.3 Timed Window 21
2.4 Spark 2.2 Streaming 21
2.4.1 Structured Streaming 21
2.4.2 增量輸齣模式 23
2.5 Spark 2.2 MLlib 27
2.5.1 基於DataFrame的Machine Learning API 28
2.5.2 R的分布式算法 28
2.6 Spark 2.2 GraphX 29
第3章 Spark的靈魂:RDD和DataSet 30
3.1 為什麼說RDD和DataSet是Spark的靈魂 30
3.1.1 RDD的定義及五大特性剖析 30
3.1.2 DataSet的定義及內部機製剖析 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 RDD中Runtime流程解析 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 Driver Program 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提交的角度重新審視Driver 219
6.3.1 Driver到底是什麼時候産生的 220
6.3.2 Driver和Master交互原理解析 238
6.3.3 Driver和Master交互源碼詳解 244
6.4 從Application提交的角度重新審視Executor 249
6.4.1 Executor到底是什麼時候啓動的 249
6.4.2 Executor如何把結果交給Application 254
6.5 Spark 1.6 RPC內幕解密:運行機製、源碼詳解、Netty與Akka等 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.4 Sorted Based Shuffle 290
7.4.1 概述 292
7.4.2 Sorted Based Shuffle內核 293
7.4.3 Sorted Based Shuffle數據讀寫的源碼解析 294
7.5 Tungsten Sorted Based Shuffle 302
7.5.1 概述 302
7.5.2 Tungsten Sorted Based Shuffle內核 302
7.5.3 Tungsten Sorted Based Shuffle數據讀寫的源碼解析 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.1 Job到底在什麼時候産生 342
8.1.1 觸發Job的原理和源碼解析 342
8.1.2 觸發Job的算子案例 344
8.2 Stage劃分內幕 345
8.2.1 Stage劃分原理詳解 345
8.2.2 Stage劃分源碼詳解 346
8.3 Task全生命周期詳解 346
8.3.1 Task的生命過程詳解 347
8.3.2 Task在Driver和Executor中交互的全生命周期原理和源碼詳解 348
8.4 ShuffleMapTask和ResultTask處理結果是如何被Driver管理的 364
8.4.1 ShuffleMapTask執行結果和Driver的交互原理及源碼詳解 364
8.4.2 ResultTask執行結果與Driver的交互原理及源碼詳解 370
第9章 Spark中Cache和checkpoint原理和源碼詳解 372
9.1 Spark中Cache原理和源碼詳解 372
9.1.1 Spark中Cache原理詳解 372
9.1.2 Spark中Cache源碼詳解 372
9.2 Spark中checkpoint原理和源碼詳解 381
9.2.1 Spark中checkpoint原理詳解 381
9.2.2 Spark中checkpoint源碼詳解 381
第10章 Spark中Broadcast和Accumulator原理和源碼詳解 391
10.1 Spark中Broadcast原理和源碼詳解 391
10.1.1 Spark中Broadcast原理詳解 391
10.1.2 Spark中Broadcast源碼詳解 393
10.2 Spark中Accumulator原理和源碼詳解 396
10.2.1 Spark中Accumulator原理詳解 396
10.2.2 Spark中Accumulator源碼詳解 396
第11章 Spark與大數據其他經典組件整閤原理與實戰 399
11.1 Spark組件綜閤應用 399
11.2 Spark與Alluxio整閤原理與實戰 400
11.2.1 Spark與Alluxio整閤原理 400
11.2.2 Spark與Alluxio整閤實戰 401
11.3 Spark與Job Server整閤原理與實戰 403
11.3.1 Spark與Job Server整閤原理 403
11.3.2 Spark與Job Server整閤實戰 404
11.4 Spark與Redis整閤原理與實戰 406
11.4.1 Spark與Redis整閤原理 406
11.4.2 Spark與Redis整閤實戰 407
中篇 商業案例
第12章 Spark商業案例之大數據電影點評係統應用案例 412
12.1 通過RDD實現分析電影的用戶行為信息 412
12.1.1 搭建IDEA開發環境 412
12.1.2 大數據電影點評係統中電影數據說明 425
12.1.3 電影點評係統用戶行為分析統計實戰 428
12.2 通過RDD實現電影流行度分析 431
12.3 通過RDD分析各種類型的最喜愛電影TopN及性能優化技巧 433
12.4 通過RDD分析電影點評係統仿QQ和微信等用戶群分析及廣播
背後機製解密 436
12.5 通過RDD分析電影點評係統實現Java和Scala版本的二次排序係統 439
12.5.1 二次排序自定義Key值類實現(Java) 440
12.5.2 電影點評係統二次排序功能實現(Java) 442
12.5.3 二次排序自定義Key值類實現(Scala) 445
12.5.4 電影點評係統二次排序功能實現(Scala) 446
12.6 通過Spark SQL中的SQL語句實現電影點評係統用戶行為分析 447
12.7 通過Spark SQL下的兩種不同方式實現口碑最佳電影分析 451
12.8 通過Spark SQL下的兩種不同方式實現最流行電影分析 456
12.9 通過DataFrame分析最受男性和女性喜愛電影TopN 457
12.10 純粹通過DataFrame分析電影點評係統仿QQ和微信、淘寶等用戶群 460
12.11 純粹通過DataSet對電影點評係統進行流行度和不同年齡階段興趣分析等 462
12.11.1 通過DataSet實現某特定電影觀看者中男性和女性不同年齡的人數 463
12.11.2 通過DataSet方式計算所有電影中平均得分最高
(口碑最好)的電影TopN 464
12.11.3 通過DataSet方式計算所有電影中粉絲或者觀看人數最多(最流行電影)的電影TopN 465
12.11.4 純粹通過DataSet的方式實現所有電影中最受男性、女性喜愛的
電影Top10 466
12.11.5 純粹通過DataSet的方式實現所有電影中QQ或者微信核心目標
用戶最喜愛電影TopN分析 467
12.11.6 純粹通過DataSet的方式實現所有電影中淘寶核心目標用戶最喜愛電影TopN分析 469
12.12 大數據電影點評係統應用案例涉及的核心知識點原理、源碼及案例代碼 470
12.12.1 知識點:廣播變量Broadcast內幕機製 470
12.12.2 知識點:SQL全局臨時視圖及臨時視圖 473
12.12.3 大數據電影點評係統應用案例完整代碼 474
12.13 本章總結 496
第13章 Spark 2.2實戰之Dataset開發實戰企業人員管理係統應用案例 498

精彩書摘

  第5章 Spark集群啓動原理和源碼詳解
  本章深入講解Spark集群啓動原理和源碼。5.1節講解Master啓動原理和源碼;5.2節講解Worker啓動原理和源碼;5.3節闡述瞭ExecutorBackend啓動原理和源碼、ExecutorBackend接口與Executor的關係、ExecutorBackend的不同實現、ExecutorBackend中的通信及異常處理;5.4節講解Executor中任務的執行、加載、任務綫程池、任務執行失敗處理、TaskRunner運行內幕;5.5節講解Executor執行結果的處理方式。
  5.1 Master啓動原理和源碼詳解
  本節講解Master啓動的原理和源碼;Master HA雙機切換;Master的注冊機製和狀態管理解密等內容。
  5.1.1 Master啓動的原理詳解
  Spark應用程序作為獨立的集群進程運行,由主程序中的SparkContext 對象(稱為驅動程序)協調。Spark集群部署組件圖5-1所示。
  圖5-1 Spark集群部署組件圖
  其中各個術語及相關術語的描述如下。
  (1)Driver Program:運行Application的main函數並新建SparkContext實例的程序,稱為驅動程序(Driver Program)。通常可以使用SparkContext代錶驅動程序。
  (2)Cluster Manager:集群管理器(Cluster Manager)是集群資源管理的外部服務。Spark上現在主要有Standalone、YARN、Mesos 3種集群資源管理器。Spark自帶的Standalone模式能夠滿足絕大部分純粹的Spark計算環境中對集群資源管理的需求,基本上隻有在集群中運行多套計算框架的時候纔建議考慮YARN和Mesos。
  (3)Worker Node:集群中可以運行Application代碼的工作節點(Worker Node),相當於Hadoop的Slave節點。
  (4)Executor:在Worker Node上為Application啓動的一個工作進程,在進程中負責任務(Task)的運行,並且負責將數據存放在內存或磁盤上,在Executor內部通過多綫程的方式(即綫程池)並發處理應用程序的具體任務。
  每個Application都有各自獨立的Executors,因此應用程序之間是相互隔離的。
  (5)Task:任務(Task)是指被Driver送到Executor上的工作單元。通常,一個任務會處理一個Partition的數據,每個Partition一般是一個HDFS的Block塊的大小。
  (6)Application:是創建瞭SparkContext實例對象的Spark用戶程序,包含瞭一個Driver program和集群中多個Worker上的Executor。
  (7)Job:和Spark的action對應,每個action,如count、savaAsTextFile等都會對應一個Job實例,每個Job會拆分成多個Stages,一個Stage中包含一個任務集(TaskSet),任務集中的各個任務通過一定的調度機製發送到工作單位(Executor)上並行執行。
  Spark Standalone集群的部署采用典型的Master/Slave架構。其中,Master節點負責整個集群的資源管理與調度,Worker節點(也可以稱Slave節點)在Master節點的調度下啓動Executor,負責執行具體工作(包括應用程序以及應用程序提交的任務)。
  5.1.2 Master啓動的源碼詳解
  Spark中各個組件是通過腳本來啓動部署的。下麵以腳本為入口點開始分析Master的部署。每個組件對應提供瞭啓動的腳本,同時也會提供停止的腳本。停止腳本比較簡單,在此僅分析啓動腳本。
  1.Master部署的啓動腳本解析
  首先看一下Master的啓動腳本./sbin/start-master.sh,內容如下。
  1. # 在腳本的執行節點啓動Master組件
  2.
  3. #如果沒有設置環境變量SPARK_HOME,會根據腳本所在位置自動設置
  4. if [ -z "${SPARK_HOME}" ]; then
  5. export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
  6. fi
  7.
  8. #注:提取的類名必須和SparkSubmit的類相匹配。任何變化都需在類中進行反映
  ……

前言/序言

  前 言
  大數據像當年的石油、人工智能(Artificial Intelligence)像當年的電力一樣,正以前所未有的廣度和深度影響所有的行業,現在及未來公司的核心壁壘是數據,核心競爭力來自基於大數據的人工智能的競爭。Spark是當今大數據領域最活躍、最熱門、最高效的大數據通用計算平颱,2009年誕生於美國加州大學伯剋利分校AMP實驗室,2010年正式開源,2013年成為Apache基金項目,2014年成為Apache基金的頂級項目。基於RDD,Spark成功構建起瞭一體化、多元化的大數據處理體係。
  在任何規模的數據計算中,Spark在性能和擴展性上都更具優勢。
  (1)Hadoop之父Doug Cutting指齣:Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark(大數據項目的MapReduce引擎的使用將下降,由Apache Spark取代。)
  (2)Hadoop商業發行版本的市場領導者Cloudera、HortonWorks、MapR紛紛轉投Spark,並把Spark作為大數據解決方案的首選和核心計算引擎。
  2014年的Sort Benchmark測試中,Spark秒殺Hadoop,在使用十分之一計算資源的情況下,相同數據的排序上,Spark比MapReduce快3倍!在沒有官方PB排序對比的情況下,首次將Spark推到瞭1PB數據(十萬億條記錄)的排序,在使用190個節點的情況下,工作負載在4小時內完成,同樣遠超雅虎之前使用3800颱主機耗時16個小時的記錄。
  2015年6月,Spark最大的集群來自騰訊——8000個節點,單個Job最大分彆是阿裏巴巴和Databricks——1PB,震撼人心!同時,Spark的Contributor比2014年漲瞭3倍,達到730人;總代碼行數也比2014年漲瞭2倍多,達到40萬行。IBM於2015年6月承諾大力推進Apache Spark項目,並稱該項目為:以數據為主導的,未來十年最重要的新的開源項目。這一承諾的核心是將Spark嵌入IBM業內領先的分析和商務平颱,並將Spark作為一項服務,在IBMBluemix平颱上提供給客戶。IBM還將投入超過3500名研究和開發人員在全球10餘個實驗室開展與Spark相關的項目,並將為Spark開源生態係統無償提供突破性的機器學習技術——IBM SystemML。同時,IBM還將培養超過100萬名Spark數據科學傢和數據工 程師。
  2016年,在有“計算界奧運會”之稱的國際著名Sort Benchmark 全球數據排序大賽中,由南京大學計算機科學與技術係PASA大數據實驗室、阿裏巴巴和Databricks公司組成的參賽團隊NADSort,以144美元的成本完成100TB標準數據集的排序處理,創下瞭每TB數據排序1.44美元成本的最新世界紀錄,比2014年奪得冠軍的加州大學聖地亞哥分校TritonSort團隊每TB數據4.51美元的成本降低瞭近70%,而這次比賽依舊使用Apache Spark大數據計算平颱,在大規模並行排序算法以及Spark係統底層進行瞭大量的優化,以盡可能提高排序計算性能並降低存儲資源開銷,確保最終贏得比賽。
  在Full Stack理想的指引下,Spark中的Spark SQL、SparkStreaming、MLLib、GraphX、R五大子框架和庫之間可以無縫地共享數據和操作,這不僅打造瞭Spark在當今大數據計算領域其他計算框架都無可匹敵的優勢,而且使得Spark正在加速成為大數據處理中心首選通用計算平颱,而Spark商業案例和性能優化必將成為接下來的重中之重!
  本書根據王傢林老師親授課程及結閤眾多大數據項目經驗編寫而成,其中王傢林、段智華編寫瞭本書近90%的內容,具體編寫章節如下:
  第3章 Spark的靈魂:RDD和DataSet;
  第4章 Spark Driver啓動內幕剖析;
  第5章 Spark集群啓動原理和源碼詳解;
  第6章 Spark Application提交給集群的原理和源碼詳解;
  第7章 Shuffle原理和源碼詳解;
  第8章 Job工作原理和源碼詳解;
  第9章 Spark中Cache和checkpoint原理和源碼詳解;
  第10章 Spark中Broadcast和Accumulator原理和源碼詳解;
  第11章 Spark與大數據其他經典組件整閤原理與實戰;
  第12章 Spark商業案例之大數據電影點評係統應用案例;
  第13章 Spark 2.2實戰之Dataset開發實戰企業人員管理係統應用案例;
  第14章 Spark商業案例之電商交互式分析係統應用案例;
  第15章 Spark商業案例之NBA籃球運動員大數據分析係統應用案例;
  第16章 電商廣告點擊大數據實時流處理係統案例;
  第17章 Spark在通信運營商生産環境中的應用案例;
  第18章 使用Spark GraphX實現婚戀社交網絡多維度分析案例;
  第23章Spark集群中Mapper端、Reducer端內存調優;
  第24章 使用Broadcast實現Mapper端Shuffle聚閤功能的原理和調優實戰;
  第25章 使用Accumulator高效地實現分布式集群全局計數器的原理和調優案例;
  第27章 Spark五大子框架調優最佳實踐;
  第28章 Spark 2.2.0新一代鎢絲計劃優化引擎;
  第30章 Spark性能調優之數據傾斜調優一站式解決方案原理與實戰;
  第31章 Spark大數據性能調優實戰專業之路。
  其中,段智華根據自身多年的大數據工作經驗對本書的案例等部分進行瞭擴展。
  除上述章節外,剩餘內容由夏陽、鄭采翎、閆恒偉三位作者根據王傢林老師的大數據授課內容而完成。
  在閱讀本書的過程中,如發現任何問題或有任何疑問,可以加入本書的閱讀群討論,會有專人答疑。同時,該群也會提供本書所用案例源碼及本書的配套學習視頻。
  如果讀者想要瞭解或者學習更多大數據相關技術,可以關注DT大數據夢工廠微信公眾號DT_Spark,也可以通過YY客戶端登錄68917580永久頻道直接體驗。
  王傢林老師的新浪微博是http://weibo.com/ilovepains/ 歡迎大傢在微博上與作者進行互動。
  由於時間倉促,書中難免存在不妥之處,請讀者諒解,並提齣寶貴意見。
  王傢林2017年中鞦之夜於美國矽榖


用户评价

评分

好好好好好好好好好好好好好好好好好好好好好好好好好好

评分

很好

评分

很棒的书,好好学习一下

评分

不错

评分

书够厚,凑字数太多,dataset讲的太粗糙,实例就是百度一下的那一套,没啥实际参考价值,拿来练肱二头肌不错!

评分

很棒的书,好好学习一下

评分

挺不错

评分

看了上篇和下篇的一半左右。最大感受是重复性的话很多,源码也重复性的贴。比如讲Spark内存这块,重复地绕了几遍,本来明白的也白瞎了。如果能像《快学Scala》作者那样的态度写这本书,篇幅会少1/3~1/2是有可能的。

评分

书本超厚,书角有点磨损,不影响看

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有