第1章 Spark係統概述 1
1.1 大數據處理框架 1
1.2 Spark大數據處理框架 3
1.2.1 RDD錶達能力 3
1.2.2 Spark子係統 4
1.3 小結 7
第2章 Spark RDD及編程接口 9
2.1 Spark程序“Hello World” 9
2.2 Spark RDD 12
2.2.1 RDD分區(partitions) 13
2.2.2 RDD優先位置(preferredLocations) 13
2.2.3 RDD依賴關係(dependencies) 15
2.2.4 RDD分區計算(compute) 19
2.2.5 RDD分區函數(partitioner) 20
2.3 創建操作 23
2.3.1 集閤創建操作 23
2.3.2 存儲創建操作 23
2.4 轉換操作 26
2.4.1 RDD基本轉換操作 26
2.4.2 鍵值RDD轉換操作 35
2.4.3 再論RDD依賴關係 43
2.5 控製操作(control operation) 46
2.6 行動操作(action operation) 47
2.6.1 集閤標量行動操作 47
2.6.2 存儲行動操作 52
2.7 小結 56
第3章 Spark運行模式及原理 57
3.1 Spark運行模式概述 57
3.1.1 Spark運行模式列錶 57
3.1.2 Spark基本工作流程 58
3.1.3 相關基本類 59
3.2 Local模式 62
3.2.1 部署及程序運行 62
3.2.2 內部實現原理 63
3.3 Standalone模式 64
3.3.1 部署及程序運行 64
3.3.2 內部實現原理 67
3.4 Local cluster模式 68
3.4.1 部署及程序運行 68
3.4.2 內部實現原理 69
3.5 Mesos模式 69
3.5.1 部署及程序運行 69
3.5.2 內部實現原理 70
3.6 YARN standalone / YARN cluster模式 72
3.6.1 部署及程序運行 72
3.6.2 內部實現原理 75
3.7 YARN client模式 76
3.7.1 部署及程序運行 76
3.7.2 內部實現原理 77
3.8 各種模式的實現細節比較 78
3.8.1 環境變量的傳遞 78
3.8.2 JAR包和各種依賴文件的分發 80
3.8.3 任務管理和序列化 82
3.8.4 用戶參數配置 83
3.8.5 用戶及權限控製 84
3.9 Spark 1.0版本之後的變化 85
3.10 小結 86
第4章 Spark調度管理原理 87
4.1 Spark作業調度管理概述 87
4.2 Spark調度相關基本概念 88
4.3 作業調度模塊頂層邏輯概述 89
4.4 作業調度具體工作流程 92
4.4.1 調度階段的拆分 94
4.4.2 調度階段的提交 97
4.4.3 任務集的提交 99
4.4.4 完成狀態的監控 99
4.4.5 任務結果的獲取 101
4.5 任務集管理模塊詳解 102
4.6 調度池和調度模式分析 104
4.7 其他調度相關內容 106
4.7.1 Spark應用之間的調度關係 106
4.7.2 調度過程中的數據本地性問題 106
4.8 小結 107
第5章 Spark的存儲管理 109
5.1 存儲管理模塊整體架構 109
5.1.1 通信層架構 110
5.1.2 通信層消息傳遞 112
5.1.3 注冊存儲管理模塊 113
5.1.4 存儲層架構 114
5.1.5 數據塊 (Block) 116
5.2 RDD 持久化 116
5.2.1 RDD分區和數據塊的關係 117
5.2.2 內存緩存 118
5.2.3 磁盤緩存 119
5.2.4 持久化選項 120
5.2.5 如何選擇不同的持久化選項 122
5.3 Shuffle數據持久化 122
5.4 廣播(Broadcast)變量持久化 125
5.5 小結 126
第6章 Spark監控管理 127
6.1 UI管理 127
6.1.1 實時UI管理 128
6.1.2 曆史UI管理 132
6.2 Metrics管理 133
6.2.1 Metrics係統架構 133
6.2.2 Metrics係統配置 135
6.2.3 輸入源(Metrics Source)介紹 136
6.2.4 輸齣方式(Metrics Sink)介紹 138
6.3 小結 139
第7章 Shark架構與安裝配置 141
7.1 Shark架構淺析 142
7.2 Hive/Shark各功能組件對比 143
7.2.1 MetaStore 143
7.2.2 CLI/ Beeline 143
7.2.3 JDBC/ODBC 144
7.2.4 Hive Server/2 與 Shark Server/2 144
7.2.5 Driver 145
7.2.6 SQL Parser 146
7.2.7 查詢優化器(Query Optimizer) 147
7.2.8 物理計劃與執行 147
7.3 Shark安裝配置與使用 148
7.3.1 安裝前準備工作 149
7.3.2 在不同運行模式下安裝Shark 149
7.4 Shark SQL命令行工具(CLI) 152
7.5 使用Shark Shell命令 155
7.6 啓動Shark Server 155
7.7 Shark Server2配置與啓動 156
7.8 緩存數據錶 157
7.8.1 數據緩存級彆 158
7.8.2 創建不同緩存級彆的Shark數據錶 158
7.8.3 指定數據錶緩存策略 159
7.8.4 使用Tachyon 160
7.9 常見問題分析 160
7.9.1 OutOfMemory異常 160
7.9.2 數據處理吞吐量低 161
7.9.3 Shark查詢比Hive慢 161
7.10 小結 162
第8章 SQL程序擴展 163
8.1 程序擴展並行運行模式 164
8.2 Evaluator和ObjectInspector 164
8.3 自定義函數擴展 168
8.3.1 自定義函數擴展分類 168
8.3.2 CLI中的用戶自定義函數擴展相關命令 170
8.3.3 用戶自定義函數(UDF) 171
8.3.4 通用用戶自定義函數(Generic UDF) 175
8.3.5 用戶自定義聚閤函數(UDAF) 178
8.3.6 通用用戶自定義聚閤函數(Generic UDAF) 182
8.3.7 通用用戶自定義錶函數(Generic UDTF) 186
8.4 自定義數據存取格式 190
8.4.1 SerDe 190
8.4.2 StorageHandler 197
8.5 小結 198
第9章 Spark SQL 199
9.1 Spark SQL邏輯架構 199
9.1.1 Catalyst功能邊界 200
9.1.2 SQL解析階段 201
9.1.3 邏輯計劃元數據綁定和語義分析階段 202
9.1.4 邏輯計劃優化階段 202
9.1.5 物理計劃生成階段 202
9.1.6 Shark和Spark SQL對比 203
9.2 Catalyst上下文(Context) 204
9.2.1 SQLContext 204
9.2.2 HiveContext 205
9.3 SQL DSL API 206
9.3.1 數據源管理 206
9.3.2 SchemaRDD 208
9.3.3 Row API 210
9.3.4 數據類型 211
9.3.5 DSL API舉例 213
9.3.6 錶達式計算 214
9.3.7 Parquet列式存儲文件 218
9.3.8 代碼演示 218
9.4 Java API 221
9.5 Python API 224
9.6 Spark SQL CLI 225
9.7 Thrift服務 225
9.8 小結 225
第10章 Spark Streaming流數據處理框架 227
10.1 快速入門 227
10.2 Spark Streaming基本概念 229
10.2.1 鏈接和初始化 229
10.2.2 時間和窗口概念 231
10.2.3 DStream原理 232
10.2.4 DStream輸入源 234
10.2.5 DStream 操作 235
10.2.6 DStream持久化 237
10.3 性能調優 238
10.3.1 運行時間優化 238
10.3.2 內存使用優化 238
10.4 容錯處理 239
10.4.1 工作節點失效 239
10.4.2 驅動節點失效 240
10.5 DStream作業的産生和調度 242
10.5.1 作業産生 242
10.5.2 作業調度 243
10.5.3 Streaming作業與Spark作業之間的關係 244
10.6 DStream與RDD關係 246
10.7 數據接收原理 248
10.8 自定義數據輸入源 251
10.9 自定義監控接口(StreamingListener) 253
10.10 Spark Streaming案例分析 254
10.11 小結 256
第11章 GraphX計算框架 259
11.1 圖並行計算 259
11.1.1 數據並行與圖並行計算 259
11.1.2 圖並行計算框架簡介 260
11.1.3 GraphX簡介 264
11.2 GraphX模型設計 264
11.2.1 數據模型 264
11.2.2 圖計算接口 265
11.3 GraphX模型實現 269
11.3.1 圖的分布式存儲 269
11.3.2 圖操作執行策略 278
11.3.3 圖操作執行優化 280
11.3.4 序列化和反序列化 283
11.3.5 GraphX內置算法庫 284
11.4 GraphX應用 285
11.4.1 Pregel模型 285
11.4.2 N維鄰接關係計算 288
11.5 小結 291
第12章 Tachyon存儲係統 293
12.1 設計原理 294
12.1.1 高效的內存讀寫 294
12.1.2 無副本的可靠性實現——Lineage 297
12.2 框架設計 299
12.2.1 主節點 300
12.2.2 工作節點 304
12.2.3 客戶端 306
12.2.4 讀寫工作流程 307
12.3 Tachyon的部署 313
12.3.1 單機部署 313
12.3.2 分布式部署 316
12.3.3 Tachyon的配置 317
12.4 Tachyon應用 321
12.4.1 Shark原始錶(RawTable) 321
12.4.2 Spark的堆外RDD 325
12.4.3 Tachyon用戶接口(API) 327
12.5 相關項目討論 335
12.6 小結 336
· · · · · · (
收起)