Spark內核機制解析及性能調優 Spark内核机制解析及性能调优

王家林, 段智華, 等

  • 出版商: 機械工業
  • 出版日期: 2017-01-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 344
  • 裝訂: 平裝
  • ISBN: 7111554426
  • ISBN-13: 9787111554424
  • 相關分類: Spark
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

<內容簡介>

本書致力於Spark內核的深入解析,帶領讀者掌握Spark內核的各個關鍵知識點。具體內容由詳細講述RDD提供的功能以及內部實現的機制開始,通過源碼引導讀者深入理解Spark的集群部署的內部機制、Spark內部調度的機制、Executor的內部機制、Shuffle的內部機制,進而講述Tungsten的內部機制,接著又進一步深入分析了SparkStreaming的內部機制。本書的後部分,是任何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.4Spark Standalone部署
3.4.1部署框架
3.4.2應用程序的部署
3.4.3Master的部署
3.4. 4Worker的部署
3.4.5內部交互的消息機制
3.4.6Master HA的部署
3.5Spark on YARN的部署模型
3.5.1部署框架
3.5.2應用程序的部署
3.6小結

第4章 Spark調度器(Scheduler)運行機制

4.1 Spark運行的核心概念
4.1.1Spark運行的基本對象
4.1.2Spark運行框架及各組件的基本運行原理
4.2Spark Driver Program剖析
4.2.1什麼是Spark Driver Program
4.2.2SparkContext原理剖析
4.2.3SparkContext源代碼解析
4.3Spark Job的觸發
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不同Storage Level對比
6.4Executor內存模型
6.5Tachyon
6.5.1Tachyon簡介
6.5.2Tachyon API的使用
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基於Tungsten Sort的Shuffle
7.5.1基於Tungsten Sort的Shuffle內核
7.5.2基於Tungsten Sort的Shuffle寫數據的源代碼解析
7.6小結

第8章 鎢絲計劃(Project Tungsten)

8.1鎢絲計劃(Project Tungsten)概述
8.2內存管理模型
8.2.1現有內存管理的機制
8.2.2Project Tungsten內存管理的模型及其源代碼的解析
8.3基於內存管理模型的Shuffle二進制數據處理
8.3.1插入記錄時二進制數據的處理
8.3.2spill時二進制數據的處理
8.4小結

第9章 性能優化

9.1Spark的配置機制