前 言
第一部分 基礎篇
第1章 閱讀源代碼前的準備/ 2
1.1 準備源代碼學習環境/ 2
1.1.1 基礎軟件下載/ 2
1.1.2 如何準備Windows環境/ 3
1.1.3 如何準備Linux環境/ 6
1.2 獲取Hadoop源代碼/ 7
1.3 搭建Hadoop源代碼閱讀環境/ 8
1.3.1 創建Hadoop工程/ 8
1.3.2 Hadoop源代碼閱讀技巧/ 9
1.4 Hadoop源代碼組織結構/ 10
1.5 Hadoop初體驗/ 13
1.5.1 啓動Hadoop/ 13
1.5.2 Hadoop Shell介紹/ 15
1.5.3 Hadoop Eclipse插件介紹/ 15
1.6 編譯及調試Hadoop源代碼/ 19
1.6.1 編譯Hadoop源代碼/ 19
1.6.2 調試Hadoop源代碼/ 20
1.7 小結/ 23
第2章 MapReduce設計理念與基本架構/ 24
2.1 Hadoop發展史/ 24
2.1.1 Hadoop産生背景/ 24
2.1.2 Apache Hadoop新版本的特性/ 25
2.1.3 Hadoop版本變遷/ 26
2.2 Hadoop MapReduce設計目標/ 28
2.3 MapReduce編程模型概述/ 29
2.3.1 MapReduce編程模型簡介/ 29
2.3.2 MapReduce編程實例/ 31
2.4 Hadoop基本架構/ 32
2.4.1 HDFS架構/ 33
2.4.2 Hadoop MapReduce架構/ 34
2.5 Hadoop MapReduce作業的生命周期/ 36
2.6 小結/ 38
第二部分 MapReduce編程模型篇
第3章 MapReduce編程模型/ 40
3.1 MapReduce編程模型概述/ 40
3.1.1 MapReduce編程接口體係結構/ 40
3.1.2 新舊MapReduce API比較/ 41
3.2 MapReduce API基本概念/ 42
3.2.1 序列化/ 42
3.2.2 Reporter參數/ 43
3.2.3 迴調機製/ 43
3.3 Java API解析/ 44
3.3.1 作業配置與提交/ 44
3.3.2 InputFormat接口的設計與實現/ 48
3.3.3 OutputFormat接口的設計與實現/ 53
3.3.4 Mapper與Reducer解析/ 55
3.3.5 Partitioner接口的設計與實現/ 59
3.4 非Java API解析/ 61
3.4.1 Hadoop Streaming的實現原理/ 61
3.4.2 Hadoop Pipes的實現原理/ 64
3.5 Hadoop工作流/ 67
3.5.1 JobControl的實現原理/ 67
3.5.2 ChainMapper/ChainReducer的實現原理/ 69
3.5.3 Hadoop工作流引擎/ 71
3.6 小結/ 73
第三部分 MapReduce核心設計篇
第4章 Hadoop RPC框架解析/ 76
4.1 Hadoop RPC框架概述/ 76
4.2 Java基礎知識/ 77
4.2.1 Java反射機製與動態代理/ 78
4.2.2 Java網絡編程/ 80
4.2.3 Java NIO/ 82
4.3 Hadoop RPC基本框架分析/ 89
4.3.1 RPC基本概念/ 89
4.3.2 Hadoop RPC基本框架/ 91
4.3.3 集成其他開源RPC框架/ 98
4.4 MapReduce通信協議分析/ 100
4.4.1 MapReduce 通信協議概述/ 100
4.4.2 JobSubmissionProtocol通信協議/ 102
4.4.3 InterTrackerProtocol通信協議/ 102
4.4.4 TaskUmbilicalProtocol通信協議/ 103
4.4.5 其他通信協議/ 104
4.5 小結/ 106
第5章 作業提交與初始化過程分析/ 107
5.1 作業提交與初始化概述/ 107
5.2 作業提交過程詳解/ 108
5.2.1 執行Shell命令/ 108
5.2.2 作業文件上傳/ 109
5.2.3 産生InputSplit文件/ 111
5.2.4 作業提交到JobTracker/ 113
5.3 作業初始化過程詳解/ 115
5.4 Hadoop DistributedCache原理分析/ 117
5.4.1 使用方法介紹/ 118
5.4.2 工作原理分析/ 120
5.5 小結/ 122
第6章 JobTracker內部實現剖析/ 123
6.1 JobTracker概述/ 123
6.2 JobTracker啓動過程分析/ 125
6.2.1 JobTracker啓動過程概述/ 125
6.2.2 重要對象初始化/ 125
6.2.3 各種綫程功能/ 128
6.2.4 作業恢復/ 129
6.3 心跳接收與應答/ 129
6.3.1 更新狀態/ 131
6.3.2 下達命令/ 131
6.4 Job和Task運行時信息維護/ 134
6.4.1 作業描述模型/ 134
6.4.2 JobInProgress/ 136
6.4.3 TaskInProgress/ 137
6.4.4 作業和任務狀態轉換圖/ 139
6.5 容錯機製/ 141
6.5.1 JobTracker容錯/ 141
6.5.2 TaskTracker容錯/ 142
6.5.3 Job/Task容錯/ 145
6.5.4 Record容錯/ 147
6.5.5 磁盤容錯/ 151
6.6 任務推測執行原理/ 152
6.6.1 計算模型假設/ 153
6.6.2 1.0.0版本的算法/ 153
6.6.3 0.21.0版本的算法/ 154
6.6.4 2.0版本的算法/ 156
6.7 Hadoop資源管理/ 157
6.7.1 任務調度框架分析/ 159
6.7.2 任務選擇策略分析/ 162
6.7.3 FIFO調度器分析/ 164
6.7.4 Hadoop資源管理優化/ 165
6.8 小結/ 168
第7章 TaskTracker內部實現剖析/ 169
7.1 TaskTracker概述/ 169
7.2 TaskTracker啓動過程分析/ 170
7.2.1 重要變量初始化/ 171
7.2.2 重要對象初始化/ 171
7.2.3 連接JobTracker/ 172
7.3 心跳機製/ 172
7.3.1 單次心跳發送/ 172
7.3.2 狀態發送/ 175
7.3.3 命令執行/ 178
7.4 TaskTracker行為分析/ 179
7.4.1 啓動新任務/ 179
7.4.2 提交任務/ 179
7.4.3 殺死任務/ 181
7.4.4 殺死作業/ 182
7.4.5 重新初始化/ 184
7.5 作業目錄管理/ 184
7.6 啓動新任務/ 186
7.6.1 任務啓動過程分析/ 186
7.6.2 資源隔離機製/ 193
7.7 小結/ 195
第8章 Task運行過程分析/ 196
8.1 Task運行過程概述/ 196
8.2 基本數據結構和算法/ 197
8.2.1 IFile存儲格式/ 197
8.2.2 排序/ 198
8.2.3 Reporter/ 201
8.3 Map Task內部實現/ 204
8.3.1 Map Task整體流程/ 204
8.3.2 Collect過程分析/ 205
8.3.3 Spill過程分析/ 213
8.3.4 Combine過程分析/ 214
8.4 Reduce Task內部實現/ 214
8.4.1 Reduce Task整體流程/ 215
8.4.2 Shuffle和Merge階段分析/ 215
8.4.3 Sort和Reduce階段分析/ 218
8.5 Map/Reduce Task優化/ 219
8.5.1 參數調優/ 219
8.5.2 係統優化/ 220
8.6 小結/ 224
第四部分 MapReduce高級篇
第9章 Hadoop性能調優/ 228
9.1 概述/ 228
9.2 從管理員角度進行調優/ 229
9.2.1 硬件選擇/ 229
9.2.2 操作係統參數調優/ 229
9.2.3 JVM參數調優/ 230
9.2.4 Hadoop參數調優/ 230
9.3 從用戶角度進行調優/ 235
9.3.1 應用程序編寫規範/ 235
9.3.2 作業級彆參數調優/ 235
9.3.3 任務級彆參數調優/ 239
9.4 小結/ 240
第10章 Hadoop多用戶作業調度器/ 241
10.1 多用戶調度器産生背景/ 241
10.2 HOD/ 242
10.2.1 Torque資源管理器/ 242
10.2.2 HOD作業調度/ 243
10.3 Hadoop隊列管理機製/ 245
10.4 Capacity Scheduler實現/ 246
10.4.1 Capacity Scheduler功能介紹/ 247
10.4.2 Capacity Scheduler實現/ 249
10.4.3 多層隊列調度/ 254
10.5 Fair Scheduler實現/ 255
10.5.1 Fair Scheduler功能介紹/ 255
10.5.2 Fair Scheduler實現/ 258
10.5.3 Fair Scheduler與Capacity Scheduler對比/ 263
10.6 其他Hadoop調度器介紹/ 264
10.7 小結/ 265
第11章 Hadoop安全機製/ 266
11.1 Hadoop安全機製概述/ 266
11.1.1 Hadoop麵臨的安全問題/ 266
11.1.2 Hadoop對安全方麵的需求/ 267
11.1.3 Hadoop安全設計基本原則/ 267
11.2 基礎知識/ 268
11.2.1 安全認證機製/ 268
11.2.2 Kerberos介紹/ 270
11.3 Hadoop安全機製實現/ 273
11.3.1 RPC/ 273
11.3.2 HDFS/ 276
11.3.3 MapReduce/ 278
11.3.4 上層服務/ 280
11.4 應用場景總結/ 281
11.4.1 文件存取/ 281
11.4.2 作業提交與運行/ 282
11.4.3 上層中間件訪問Hadoop/ 282
11.5 小結/ 283
第12章 下一代MapReduce框架/ 284
12.1 第一代MapReduce框架的局限性/ 284
12.2 下一代MapReduce框架概述/ 284
12.2.1 基本設計思想/ 284
12.2.2 資源統一管理平颱/ 286
12.3 Apache YARN/ 287
12.3.1 Apache YARN基本框架/ 287
12.3.2 Apache YARN工作流程/ 290
12.3.3 Apache YARN設計細節/ 291
12.3.4 MapReduce與YARN結閤/ 294
12.4 Facebook Corona / 298
12.4.1 Facebook Corona基本框架/ 298
12.4.2 Facebook Corona工作流程/ 300
12.4.3 YARN與Corona對比/ 303
12.5 Apache Mesos/ 304
12.5.1 Apache Mesos基本框架/ 304
12.5.2 Apache Mesos資源分配/ 305
12.5.3 MapReduce與Mesos結閤/ 307
12.6 小結/ 309
附錄A 安裝Hadoop過程中可能存在的問題及解決方案/ 310
附錄B Hadoop默認HTTP端口號以及HTTP地址/ 312
參考資料/ 313
· · · · · · (
收起)