第1章 Hadoop 2.X 1
1.1 Hadoop的起源 1
1.2 Hadoop的演進 2
1.3 Hadoop 2.X 6
1.3.1 Yet Another Resource Negotiator(YARN) 7
1.3.2 存儲層的增強 8
1.3.3 支持增強 11
1.4 Hadoop的發行版 11
1.4.1 選哪個Hadoop發行版 12
1.4.2 可用的發行版 14
1.5 小結 16
第2章 MapReduce進階 17
2.1 MapReduce輸入 18
2.1.1 InputFormat類 18
2.1.2 InputSplit類 18
2.1.3 RecordReader類 19
2.1.4 Hadoop的“小文件”問題 20
2.1.5 輸入過濾 24
2.2 Map任務 27
2.2.1 dfs.blocksize屬性 28
2.2.2 中間輸齣結果的排序與溢齣 28
2.2.3 本地reducer和Combiner 31
2.2.4 獲取中間輸齣結果——Map 側 31
2.3 Reduce任務 32
2.3.1 獲取中間輸齣結果——Reduce側 32
2.3.2 中間輸齣結果的閤並與溢齣 33
2.4 MapReduce的輸齣 34
2.5 MapReduce作業的計數器 34
2.6 數據連接的處理 36
2.6.1 Reduce側的連接 36
2.6.2 Map側的連接 42
2.7 小結 45
第3章 Pig進階 47
3.1 Pig對比SQL 48
3.2 不同的執行模式 48
3.3 Pig的復閤數據類型 49
3.4 編譯Pig腳本 50
3.4.1 邏輯計劃 50
3.4.2 物理計劃 51
3.4.3 MapReduce計劃 52
3.5 開發和調試助手 52
3.5.1 DESCRIBE命令 52
3.5.2 EXPLAIN命令 53
3.5.3 ILLUSTRATE命令 53
3.6 Pig 操作符的高級特性 54
3.6.1 FOREACH操作符進階 54
3.6.2 Pig的特殊連接 58
3.7 用戶定義函數 61
3.7.1 運算函數 61
3.7.2 加載函數 66
3.7.3 存儲函數 68
3.8 Pig的性能優化 69
3.8.1 優化規則 69
3.8.2 Pig腳本性能的測量 71
3.8.3 Pig的Combiner 72
3.8.4 Bag數據類型的內存 72
3.8.5 Pig的reducer數量 72
3.8.6 Pig的multiquery模式 73
3.9 最佳實踐 73
3.9.1 明確地使用類型 74
3.9.2 更早更頻繁地使用投影 74
3.9.3 更早更頻繁地使用過濾 74
3.9.4 使用LIMIT操作符 74
3.9.5 使用DISTINCT操作符 74
3.9.6 減少操作 74
3.9.7 使用Algebraic UDF 75
3.9.8 使用Accumulator UDF 75
3.9.9 剔除數據中的空記錄 75
3.9.10 使用特殊連接 75
3.9.11 壓縮中間結果 75
3.9.12 閤並小文件 76
3.10 小結 76
第4章 Hive進階 77
4.1 Hive架構 77
4.1.1 Hive元存儲 78
4.1.2 Hive編譯器 78
4.1.3 Hive執行引擎 78
4.1.4 Hive的支持組件 79
4.2 數據類型 79
4.3 文件格式 80
4.3.1 壓縮文件 80
4.3.2 ORC文件 81
4.3.3 Parquet文件 81
4.4 數據模型 82
4.4.1 動態分區 84
4.4.2 Hive錶索引 85
4.5 Hive查詢優化器 87
4.6 DML進階 88
4.6.1 GROUP BY操作 88
4.6.2 ORDER BY與SORT BY 88
4.6.3 JOIN類型 88
4.6.4 高級聚閤 89
4.6.5 其他高級語句 90
4.7 UDF、UDAF和UDTF 90
4.8 小結 93
第5章 序列化和Hadoop I/O 95
5.1 Hadoop數據序列化 95
5.1.1 Writable與WritableComparable 96
5.1.2 Hadoop與Java序列化的區彆 98
5.2 Avro序列化 100
5.2.1 Avro與MapReduce 102
5.2.2 Avro與Pig 105
5.2.3 Avro與Hive 106
5.2.4 比較Avro與Protocol Buffers/Thrift 107
5.3 文件格式 108
5.3.1 Sequence文件格式 108
5.3.2 MapFile格式 111
5.3.3 其他數據結構 113
5.4 壓縮 113
5.4.1 分片與壓縮 114
5.4.2 壓縮範圍 115
5.5 小結 115
第6章 YARN——其他應用模式進入Hadoop的引路人 116
6.1 YARN的架構 117
6.1.1 資源管理器 117
6.1.2 Application Master 118
6.1.3 節點管理器 119
6.1.4 YARN客戶端 120
6.2 開發YARN的應用程序 120
6.2.1 實現YARN客戶端 120
6.2.2 實現AM實例 125
6.3 YARN的監控 129
6.4 YARN中的作業調度 134
6.4.1 容量調度器 134
6.4.2 公平調度器 137
6.5 YARN命令行 139
6.5.1 用戶命令 140
6.5.2 管理員命令 140
6.6 小結 141
第7章 基於YARN的Storm——Hadoop中的低延時處理 142
7.1 批處理對比流式處理 142
7.2 Apache Storm 144
7.2.1 Apache Storm的集群架構 144
7.2.2 Apache Storm的計算和數據模型 145
7.2.3 Apache Storm用例 146
7.2.4 Apache Storm的開發 147
7.2.5 Apache Storm 0.9.1 153
7.3 基於YARN的Storm 154
7.3.1 在YARN上安裝Apache Storm 154
7.3.2 安裝過程 154
7.4 小結 161
第8章 雲上的Hadoop 162
8.1 雲計算的特點 162
8.2 雲上的Hadoop 163
8.3 亞馬遜Elastic MapReduce 164
8.4 小結 175
第9章 HDFS替代品 176
9.1 HDFS的優缺點 176
9.2 亞馬遜AWS S3 177
9.3 在Hadoop中實現文件係統 179
9.4 在Hadoop中實現S3原生文件係統 179
9.5 小結 189
第10章 HDFS聯閤 190
10.1 舊版HDFS架構的限製 190
10.2 HDFS聯閤的架構 192
10.2.1 HDFS聯閤的好處 193
10.2.2 部署聯閤NameNode 193
10.3 HDFS高可用性 195
10.3.1 從NameNode、檢查節點和備份節點 195
10.3.2 高可用性——共享edits 196
10.3.3 HDFS實用工具 197
10.3.4 三層與四層網絡拓撲 197
10.4 HDFS塊放置策略 198
10.5 小結 200
第11章 Hadoop安全 201
11.1 安全的核心 201
11.2 Hadoop中的認證 202
11.2.1 Kerberos認證 202
11.2.2 Kerberos的架構和工作流 203
11.2.3 Kerberos認證和Hadoop 204
11.2.4 HTTP接口的認證 204
11.3 Hadoop中的授權 205
11.3.1 HDFS的授權 205
11.3.2 限製HDFS的使用量 208
11.3.3 Hadoop中的服務級授權 209
11.4 Hadoop中的數據保密性 211
11.5 Hadoop中的日誌審計 216
11.6 小結 217
第12章 使用Hadoop進行數據分析 218
12.1 數據分析工作流 218
12.2 機器學習 220
12.3 Apache Mahout 222
12.4 使用Hadoop和Mahout進行文檔分析 223
12.4.1 詞頻 223
12.4.2 文頻 224
12.4.3 詞頻-逆嚮文頻 224
12.4.4 Pig中的Tf-idf 225
12.4.5 餘弦相似度距離度量 228
12.4.6 使用k-means 的聚類 228
12.4.7 使用Apache Mahout進行k-means聚類 229
12.5 RHadoop 233
12.6 小結 233
附錄 微軟Windows中的Hadoop 235
· · · · · · (
收起)