本書致力於Spark內核的深入解析,帶領讀者掌握Spark內核的各個關鍵知識點。具體內容由詳細講述RDD提供的功能以及內部實現的機制開始,通過源碼引導讀者深入理解Spark的集群部署的內部機制、Spark內部調度的機制、Executor的內部機制、Shuffle的內部機制,進而講述Tungsten的內部機制,接着又進一步深入分析了Spark
Streaming的內部機制。本書的后部分,是任何Spark應用者都非常關注的Spark性能調優的內容。
本書可以使讀者對Spark內核有更深入徹底的理解,從而實現對Spark系統深度調優、Spark生產環境下故障的定位和排除、Spark的二次開發和系統高級運維。
本書的每章開篇均有重點介紹以引導讀者有目的有重點的閱讀或查閱。
本書適合於對大數據開發有興趣的在校學生。同時,對有分布式計算框架應用經驗的人員,本書也可以作為Spark源碼解析的參考書籍。
目錄
前言
第1章RDD功能解析
1.1RDD產生的技術背景及功能
1.2RDD的基本概念
1.2.1RDD的定義
1.2.2RDD五大特性
1.2.3RDD彈性特性的7個方面
1.3創建RDD的方式
1.3.1通過已經存在的Scala集合創建RDD
1.3.2通過HDFS和本地文件系統創建RDD
1.3.3其他的RDD的轉換
1.3.4其他的RDD的創建
1.4RDD算子
1.5RDD的Transformation算子
1.5.1Transformation的定義
1.5.2Transformation在RDD中的角色定位及功能
1.5.3Transformation操作的Lazy特性
1.5.4通過實踐說明Transformation的Lazy特性
1.6RDD的Action算子
1.6.1Action的定義
1.6.2Action在RDD中的角色定位及功能
1.7小結
第2章RDD的運行機制
2.1RDD依賴關系
2.1.1窄依賴(Narrow Dependency)
2.1.2寬依賴(Shuffle Dependency)
2.2有向無環圖(Directed Acyclic Graph,DAG)
2.2.1什麼是DAG
2.2.2DAG的生成機制
2.2.3DAG的邏輯視圖
2.3RDD內部的計算機制
2.3.1RDD的計算任務(Task)
2.3.2RDD的計算過程
2.4RDD中緩存的適用場景和工作機制
2.4.1緩存的使用
2.4.2緩存的適用場景
2.4.3緩存工作機制解析
2.5RDD的檢查點(Checkpoint)的適用場景和工作機制
2.5.1Checkpoint的觸發
2.5.2Checkpoint的適用場景
2.5.3Checkpoint工作機制解析
2.6RDD容錯原理及其四大核心要點
2.6.1RDD容錯原理
2.6.2RDD容錯的四大核心要點
2.7通過WordCount實踐RDD內部機制
2.7.1WordCount案例實踐
2.7.2解析RDD生成的內部機制
2.8小結
第3章部署模式(Deploy)解析
3.1部署模式概述
3.2應用程序的部署
3.2.1應用程序部署的腳本解析
3.2.2應用程序部署的源代碼解析
3.3Local與Local—Cluster部署
3.3.1Local部署
3.3.2Local(*)與Local(N)部署
3.3.3Local(*,M)與Local(N,M)部署
3.3.4Local—Cluster(S,C,M)部署
3.4SparkStandalone部署
3.4.1部署框架
3.4.2應用程序的部署
3.4.3Master的部署
3.4.4Worker的部署
3.4.5內部交互的消息機制
3.4.6MasterHA的部署
3.5SparkonYARN的部署模型
3.5.1部署框架
3.5.2應用程序的部署
3.6小結
第4章Spark調度器(Scheduler)運行機制
4.1Spark運行的核心概念
4.1.1Spark運行的基本對象
4.1.2Spark運行框架及各組件的基本運行原理
4.2SparkDriverProgram剖析
4.2.1什麼是SparkDriverProgram
4.2.2SparkContext原理剖析
4.2.3SparkContext源代碼解析
4.3SparkJob的觸發
4.3.1Job的邏輯執行(General Logical Plan)
4.3.2Job具體的物理執行
4.3.3Job觸發流程源代碼解析
4.4高層的DAG調度器(DAGScheduler)
4.4.1DAG的定義
4.4.2DAG的實例化
4.4.3DAGScheduer划分Stage的原理
4.4.4DAGScheduer划分Stage的具體算法
4.4.5Stage內部Task獲取最佳位置的算法
4.5底層的Task調度器(TaskScheduler)
4.5.1TaskScheduer原理剖析
4.5.2TaskScheduer源代碼解析
4.6調度器的通信終端(SchedulerBackend)
4.6.1SchedulerBackend原理
4.6.2SchedulerBackend源代碼解析
4.6.3Spark程序的注冊機制
4.6.4Spark程序對計算資源Executor的管理
4.7小結
第5章執行器(Executor)
5.1Executor的創建、分配、啟動及異常處理
5.1.1Executor的創建
5.1.2Executor的資源分配
5.1.3Executor的啟動
5.1.4Executor的異常處理
5.2執行器的通信接口(ExecutorBackend)
5.2.1ExecutorBackend接口與Executor的關系
5.2.2ExecutorBackend的不同實現
5.2.3ExecutorBackend中的通信
5.3執行器(Executor)中任務的執行
5.3.1Executor中任務的加載
5.3.2Executor中的任務線程池
5.3.3任務執行失敗處理
5.3.4剖析TaskRunner
5.4小結
第6章Spark的存儲模塊(Storage)
6.1Storage概述
6.1.1Storage的概念
6.1.2Storage的設計模式
6.2Storage模塊整體架構
6.2.1通信層
6.2.2存儲層
6.2.3Partition與Block的對應關系
6.3不同StorageLevel對比
6.4Executor內存模型
6.5Tachyon
6.5.1Tachyon簡介
6.5.2TachyonAPI的使用
6.5.3Tachyon在Spark中的使用
6.6小結
第7章Shuffle機制
7.1Shuffle概述
7.2Shuffle的框架
7.2.1Shuffle的框架演進
7.2.2Shuffle的框架內核
7.2.3Shuffle框架的源代碼解析
7.2.4Shuffle的注冊
7.2.5Shuffle讀寫數據的源代碼解析
7.3基於Hash的Shuffle
7.3.1基於Hash的Shuffle內核
7.3.2基於Hash的Shuffle寫數據的源代碼解析
7.4基於Sort的Shuffle
7.4.1基於Sort的Shuffle內核
7.4.2基於Sort的Shuffle寫數據的源代碼解析
7.5基於TungstenSort的Shuffle
7.5.1基於TungstenSort的Shuffle內核
7.5.2基於TungstenSort的Shuffle寫數據的源代碼解析
7.6小結
第8章鎢絲計划(Project Tungsten)
8.1鎢絲計划(Project Tungsten)概述
8.2內存管理模型
8.2.1現有內存管理的機制
8.2.2ProjectTungsten內存管理的模型及其源代碼的解析
8.3基於內存管理模型的Shuffle二進制數據處理
8.3.1插入記錄時二進制數據的處理
8.3.2spill時二進制數據的處理
8.4小結
第9章性能優化
9.1Spark的配置機制
9.1.1通過SparkConf配置Spark
9.1.2通過spark—submit配置spark
9.1.3通過配置文件配置Spark
9.1.4Spark配置機制總結
9.2性能診斷
9.2.1WebUI的8080端口
9.2.2WebUI的18080端口
9.2.3WebUI的4040端口
9.2.4WebUI的Jobs頁面
9.2.5WebUI的Stages頁面
9.2.6WebUI的Storage頁面
9.2.7WebUI的Environment頁面
9.2.8WebUI的Executors頁面
9.2.9Driver和Executor的日志
9.3性能優化
9.3.1程序編寫准則
9.3.2並行度
9.3.3資源參數調優
9.3.4串行化與壓縮
9.3.5內存調優
9.3.6廣播大變量
9.3.7持久化與checkpoInt
9.3.8數據本地性
9.3.9垃圾回收調優
9.3.10Shuffle調優
9.4小結
第1章RDD功能解析
1.1RDD產生的技術背景及功能
1.2RDD的基本概念
1.2.1RDD的定義
1.2.2RDD五大特性
1.2.3RDD彈性特性的7個方面
1.3創建RDD的方式
1.3.1通過已經存在的Scala集合創建RDD
1.3.2通過HDFS和本地文件系統創建RDD
1.3.3其他的RDD的轉換
1.3.4其他的RDD的創建
1.4RDD算子
1.5RDD的Transformation算子
1.5.1Transformation的定義
1.5.2Transformation在RDD中的角色定位及功能
1.5.3Transformation操作的Lazy特性
1.5.4通過實踐說明Transformation的Lazy特性
1.6RDD的Action算子
1.6.1Action的定義
1.6.2Action在RDD中的角色定位及功能
1.7小結
第2章RDD的運行機制
2.1RDD依賴關系
2.1.1窄依賴(Narrow Dependency)
2.1.2寬依賴(Shuffle Dependency)
2.2有向無環圖(Directed Acyclic Graph,DAG)
2.2.1什麼是DAG
2.2.2DAG的生成機制
2.2.3DAG的邏輯視圖
2.3RDD內部的計算機制
2.3.1RDD的計算任務(Task)
2.3.2RDD的計算過程
2.4RDD中緩存的適用場景和工作機制
2.4.1緩存的使用
2.4.2緩存的適用場景
2.4.3緩存工作機制解析
2.5RDD的檢查點(Checkpoint)的適用場景和工作機制
2.5.1Checkpoint的觸發
2.5.2Checkpoint的適用場景
2.5.3Checkpoint工作機制解析
2.6RDD容錯原理及其四大核心要點
2.6.1RDD容錯原理
2.6.2RDD容錯的四大核心要點
2.7通過WordCount實踐RDD內部機制
2.7.1WordCount案例實踐
2.7.2解析RDD生成的內部機制
2.8小結
第3章部署模式(Deploy)解析
3.1部署模式概述
3.2應用程序的部署
3.2.1應用程序部署的腳本解析
3.2.2應用程序部署的源代碼解析
3.3Local與Local—Cluster部署
3.3.1Local部署
3.3.2Local(*)與Local(N)部署
3.3.3Local(*,M)與Local(N,M)部署
3.3.4Local—Cluster(S,C,M)部署
3.4SparkStandalone部署
3.4.1部署框架
3.4.2應用程序的部署
3.4.3Master的部署
3.4.4Worker的部署
3.4.5內部交互的消息機制
3.4.6MasterHA的部署
3.5SparkonYARN的部署模型
3.5.1部署框架
3.5.2應用程序的部署
3.6小結
第4章Spark調度器(Scheduler)運行機制
4.1Spark運行的核心概念
4.1.1Spark運行的基本對象
4.1.2Spark運行框架及各組件的基本運行原理
4.2SparkDriverProgram剖析
4.2.1什麼是SparkDriverProgram
4.2.2SparkContext原理剖析
4.2.3SparkContext源代碼解析
4.3SparkJob的觸發
4.3.1Job的邏輯執行(General Logical Plan)
4.3.2Job具體的物理執行
4.3.3Job觸發流程源代碼解析
4.4高層的DAG調度器(DAGScheduler)
4.4.1DAG的定義
4.4.2DAG的實例化
4.4.3DAGScheduer划分Stage的原理
4.4.4DAGScheduer划分Stage的具體算法
4.4.5Stage內部Task獲取最佳位置的算法
4.5底層的Task調度器(TaskScheduler)
4.5.1TaskScheduer原理剖析
4.5.2TaskScheduer源代碼解析
4.6調度器的通信終端(SchedulerBackend)
4.6.1SchedulerBackend原理
4.6.2SchedulerBackend源代碼解析
4.6.3Spark程序的注冊機制
4.6.4Spark程序對計算資源Executor的管理
4.7小結
第5章執行器(Executor)
5.1Executor的創建、分配、啟動及異常處理
5.1.1Executor的創建
5.1.2Executor的資源分配
5.1.3Executor的啟動
5.1.4Executor的異常處理
5.2執行器的通信接口(ExecutorBackend)
5.2.1ExecutorBackend接口與Executor的關系
5.2.2ExecutorBackend的不同實現
5.2.3ExecutorBackend中的通信
5.3執行器(Executor)中任務的執行
5.3.1Executor中任務的加載
5.3.2Executor中的任務線程池
5.3.3任務執行失敗處理
5.3.4剖析TaskRunner
5.4小結
第6章Spark的存儲模塊(Storage)
6.1Storage概述
6.1.1Storage的概念
6.1.2Storage的設計模式
6.2Storage模塊整體架構
6.2.1通信層
6.2.2存儲層
6.2.3Partition與Block的對應關系
6.3不同StorageLevel對比
6.4Executor內存模型
6.5Tachyon
6.5.1Tachyon簡介
6.5.2TachyonAPI的使用
6.5.3Tachyon在Spark中的使用
6.6小結
第7章Shuffle機制
7.1Shuffle概述
7.2Shuffle的框架
7.2.1Shuffle的框架演進
7.2.2Shuffle的框架內核
7.2.3Shuffle框架的源代碼解析
7.2.4Shuffle的注冊
7.2.5Shuffle讀寫數據的源代碼解析
7.3基於Hash的Shuffle
7.3.1基於Hash的Shuffle內核
7.3.2基於Hash的Shuffle寫數據的源代碼解析
7.4基於Sort的Shuffle
7.4.1基於Sort的Shuffle內核
7.4.2基於Sort的Shuffle寫數據的源代碼解析
7.5基於TungstenSort的Shuffle
7.5.1基於TungstenSort的Shuffle內核
7.5.2基於TungstenSort的Shuffle寫數據的源代碼解析
7.6小結
第8章鎢絲計划(Project Tungsten)
8.1鎢絲計划(Project Tungsten)概述
8.2內存管理模型
8.2.1現有內存管理的機制
8.2.2ProjectTungsten內存管理的模型及其源代碼的解析
8.3基於內存管理模型的Shuffle二進制數據處理
8.3.1插入記錄時二進制數據的處理
8.3.2spill時二進制數據的處理
8.4小結
第9章性能優化
9.1Spark的配置機制
9.1.1通過SparkConf配置Spark
9.1.2通過spark—submit配置spark
9.1.3通過配置文件配置Spark
9.1.4Spark配置機制總結
9.2性能診斷
9.2.1WebUI的8080端口
9.2.2WebUI的18080端口
9.2.3WebUI的4040端口
9.2.4WebUI的Jobs頁面
9.2.5WebUI的Stages頁面
9.2.6WebUI的Storage頁面
9.2.7WebUI的Environment頁面
9.2.8WebUI的Executors頁面
9.2.9Driver和Executor的日志
9.3性能優化
9.3.1程序編寫准則
9.3.2並行度
9.3.3資源參數調優
9.3.4串行化與壓縮
9.3.5內存調優
9.3.6廣播大變量
9.3.7持久化與checkpoInt
9.3.8數據本地性
9.3.9垃圾回收調優
9.3.10Shuffle調優
9.4小結
網路書店
類別
折扣
價格
-
新書87折$308