序
前言
第1章 Spark簡介1
1.1Spark的技術背景1
1.2Spark的優點2
1.3Spark架構綜述4
1.4Spark核心組件概述5
1.4.1Spark Streaming5
1.4.2MLlib6
1.4.3Spark SQL7
1.4.4 GraphX8
1.5Spark的整體代碼結構規模8
第2章 Spark學習環境的搭建9
2.1源碼的獲取與編譯9
2.1.1源碼獲取9
2.1.2源碼編譯10
2.2構建Spark的源碼閱讀環境11
2.3小結15
第3章 RDD實現詳解16
3.1概述16
3.2什麼是RDD17
3.2.1RDD的創建19
3.2.2RDD的轉換20
3.2.3 RDD的動作22
3.2.4RDD的緩存23
3.2.5RDD的檢查點24
3.3RDD的轉換和DAG的生成25
3.3.1RDD的依賴關係26
3.3.2DAG的生成30
3.3.3Word Count的RDD轉換和DAG劃分的邏輯視圖30
3.4RDD的計算33
3.4.1Task簡介33
3.4.2Task的執行起點33
3.4.3緩存的處理35
3.4.4checkpoint的處理37
3.4.5RDD的計算邏輯39
3.5RDD的容錯機製39
3.6小結40
第4章 Scheduler 模塊詳解41
4.1模塊概述41
4.1.1整體架構41
4.1.2Scheduler的實現概述43
4.2DAGScheduler實現詳解45
4.2.1DAGScheduler的創建46
4.2.2Job的提交48
4.2.3Stage的劃分49
4.2.4任務的生成54
4.3任務調度實現詳解57
4.3.1TaskScheduler的創建57
4.3.2Task的提交概述58
4.3.3任務調度具體實現61
4.3.4Task運算結果的處理65
4.4Word Count調度計算過程詳解72
4.5小結74
第5章 Deploy模塊詳解76
5.1 Spark運行模式概述76
5.1.1 local77
5.1.2Mesos78
5.1.3YARN82
5.2模塊整體架構86
5.3消息傳遞機製詳解87
5.3.1Master和Worker87
5.3.2Master和Client89
5.3.3Client和Executor91
5.4集群的啓動92
5.4.1Master的啓動92
5.4.2Worker的啓動96
5.5集群容錯處理98
5.5.1Master 異常退齣98
5.5.2Worker異常退齣99
5.5.3Executor異常退齣101
5.6Master HA實現詳解102
5.6.1Master啓動的選舉和數據恢復策略103
5.6.2集群啓動參數的配置105
5.6.3Curator Framework簡介 106
5.6.4ZooKeeperLeaderElectionAgent的實現109
5.7小結110
第6章 Executor模塊詳解112
6.1Standalone模式的Executor分配詳解113
6.1.1SchedulerBackend創建AppClient114
6.1.2AppClient嚮Master注冊Application116
6.1.3Master根據AppClient的提交選擇Worker119
6.1.4Worker根據Master的資源分配結果創建Executor121
6.2Task的執行122
6.2.1依賴環境的創建和分發123
6.2.2任務執行125
6.2.3任務結果的處理128
6.2.4Driver端的處理130
6.3 參數設置131
6.3.1 spark.executor.memory131
6.3.2日誌相關132
6.3.3spark.executor.heartbeatInterval132
6.4小結133
第7章 Shuffle模塊詳解134
7.1Hash Based Shuffle Write135
7.1.1Basic Shuffle Writer實現解析136
7.1.2存在的問題138
7.1.3Shuffle Consolidate Writer139
7.1.4小結140
7.2Shuffle Pluggable 框架141
7.2.1org.apache.spark.shuffle.ShuffleManager141
7.2.2org.apache.spark.shuffle.ShuffleWriter143
7.2.3org.apache.spark.shuffle.ShuffleBlockManager143
7.2.4org.apache.spark.shuffle.ShuffleReader144
7.2.5如何開發自己的Shuffle機製144
7.3Sort Based Write144
7.4Shuffle Map Task運算結果的處理148
7.4.1Executor端的處理148
7.4.2Driver端的處理150
7.5Shuffle Read152
7.5.1整體流程152
7.5.2數據讀取策略的劃分155
7.5.3本地讀取156
7.5.4遠程讀取158
7.6性能調優160
7.6.1spark.shuffle.manager160
7.6.2spark.shuffle.spill162
7.6.3spark.shuffle.memoryFraction和spark.shuffle.safetyFraction162
7.6.4spark.shuffle.sort.bypassMergeThreshold 163
7.6.5spark.shuffle.blockTransferService 163
7.6.6spark.shuffle.consolidateFiles 163
7.6.7spark.shuffle.compress和 spark.shuffle.spill.compress164
7.6.8spark.reducer.maxMbInFlight165
7.7小結165
第8章 Storage模塊詳解167
8.1模塊整體架構167
8.1.1整體架構167
8.1.2源碼組織結構170
8.1.3Master 和Slave的消息傳遞詳解173
8.2存儲實現詳解181
8.2.1存儲級彆181
8.2.2模塊類圖184
8.2.3org.apache.spark.storage.DiskStore實現詳解186
8.2.4org.apache.spark.storage.MemoryStore實現詳解188
8.2.5org.apache.spark.storage.TachyonStore實現詳解189
8.2.6Block存儲的實現190
8.3性能調優194
8.3.1spark.local.dir194
8.3.2spark.executor.memory194
8.3.3spark.storage.memoryFraction194
8.3.4spark.streaming.blockInterval195
8.4小結195
第9章 企業應用概述197
9.1Spark在百度197
9.1.1現狀197
9.1.2百度開放雲BMR的Spark198
9.1.3在Spark中使用Tachyon199
9.2Spark在阿裏200
9.3Spark在騰訊200
9.4小結201
· · · · · · (
收起)