目錄
前言
第1章 Hadoop簡介/1
1.1 什麼是Hadoop/2
1.1.1 Hadoop概述/2
1.1.2 Hadoop的曆史/2
1.1.3 Hadoop的功能與作用/2
1.1.4 Hadoop的優勢/3
1.1.5 Hadoop應用現狀和發展趨勢/3
1.2 Hadoop項目及其結構/3
1.3 Hadoop體係結構/6
1.4 Hadoop與分布式開發/7
1.5 Hadoop計算模型—MapReduce/10
1.6 Hadoop數據管理/10
1.6.1 HDFS的數據管理/10
1.6.2 HBase的數據管理/12
1.6.3 Hive的數據管理/13
1.7 Hadoop集群安全策略/15
1.8 本章小結/17
第2章 Hadoop的安裝與配置/19
2.1 在Linux上安裝與配置Hadoop/20
2.1.1 安裝JDK 1.6/20
2.1.2 配置SSH免密碼登錄/21
2.1.3 安裝並運行Hadoop/22
2.2 在Mac OSX上安裝與配置Hadoop/24
2.2.1 安裝Homebrew/24
2.2.2 使用Homebrew安裝Hadoop/25
2.2.3 配置SSH和使用Hadoop/25
2.3 在Windows上安裝與配置Hadoop/25
2.3.1 安裝JDK 1.6或更高版本/25
2.3.2 安裝Cygwin/25
2.3.3 配置環境變量/26
2.3.4 安裝sshd服務/26
2.3.5 啓動sshd服務/26
2.3.6 配置SSH免密碼登錄/26
2.3.7 安裝並運行Hadoop/26
2.4 安裝和配置Hadoop集群/27
2.4.1 網絡拓撲/27
2.4.2 定義集群拓撲/27
2.4.3 建立和安裝Cluster /28
2.5 日誌分析及幾個小技巧/34
2.6 本章小結/35
第3章 MapReduce計算模型/36
3.1 為什麼要用MapReduce/37
3.2 MapReduce計算模型/38
3.2.1 MapReduce Job/38
3.2.2 Hadoop中的Hello World程序/38
3.2.3 MapReduce的數據流和控製流/46
3.3 MapReduce任務的優化/47
3.4 Hadoop流/49
3.4.1 Hadoop流的工作原理/50
3.4.2 Hadoop流的命令/51
3.4.3 兩個例子/52
3.5 Hadoop Pipes/54
3.6 本章小結/56
第4章 開發MapReduce應用程序/57
4.1 係統參數的配置/58
4.2 配置開發環境/60
4.3 編寫MapReduce程序/60
4.3.1 Map處理/60
4.3.2 Reduce處理/61
4.4 本地測試/62
4.5 運行MapReduce程序/62
4.5.1 打包/64
4.5.2 在本地模式下運行/64
4.5.3 在集群上運行/64
4.6 網絡用戶界麵/65
4.6.1 JobTracker頁麵/65
4.6.2 工作頁麵/65
4.6.3 返迴結果/66
4.6.4 任務頁麵/67
4.6.5 任務細節頁麵/67
4.7 性能調優/68
4.7.1 輸入采用大文件/68
4.7.2 壓縮文件/68
4.7.3 過濾數據/69
4.7.4 修改作業屬性/71
4.8 MapReduce工作流/72
4.8.1 復雜的Map和Reduce函數/72
4.8.2 MapReduce Job中全局共享數據/74
4.8.3 鏈接MapReduce Job/75
4.9 本章小結/77
第5章 MapReduce應用案例/79
5.1 單詞計數/80
5.1.1 實例描述/80
5.1.2 設計思路/80
5.1.3 程序代碼/81
5.1.4 代碼解讀/82
5.1.5 程序執行/83
5.1.6 代碼結果/83
5.1.7 代碼數據流/84
5.2 數據去重/85
5.2.1 實例描述/85
5.2.2 設計思路/86
5.2.3 程序代碼/86
5.3 排序/87
5.3.1 實例描述/87
5.3.2 設計思路/88
5.3.3 程序代碼/89
5.4 單錶關聯/91
5.4.1 實例描述/91
5.4.2 設計思路/92
5.4.3 程序代碼/92
5.5 多錶關聯/95
5.5.1 實例描述/95
5.5.2 設計思路/96
5.5.3 程序代碼/96
5.6 本章小結/98
第6章 MapReduce工作機製/99
6.1 MapReduce作業的執行流程/100
6.1.1 MapReduce任務執行總流程/100
6.1.2 提交作業/101
6.1.3 初始化作業/103
6.1.4 分配任務/104
6.1.5 執行任務/106
6.1.6 更新任務執行進度和狀態/107
6.1.7 完成作業/108
6.2 錯誤處理機製 /108
6.2.1 硬件故障/109
6.2.2 任務失敗/109
6.3 作業調度機製/110
6.4 Shuffle和排序/111
6.4.1 Map端/111
6.4.2 Reduce端/113
6.4.3 shuffle過程的優化/114
6.5 任務執行/114
6.5.1 推測式執行/114
6.5.2 任務JVM重用/115
6.5.3 跳過壞記錄/115
6.5.4 任務執行環境/116
6.6 本章小結/117
第7章 Hadoop I/O操作/118
7.1 I/O操作中的數據檢查/119
7.2 數據的壓縮 /126
7.2.1 Hadoop對壓縮工具的選擇/126
7.2.2 壓縮分割和輸入分割/127
7.2.3 在MapReduce程序中使用壓縮/127
7.3 數據的I/O中序列化操作/128
7.3.1 Writable類/128
7.3.2 實現自己的Hadoop數據類型/137
7.4 針對Mapreduce的文件類/139
7.4.1 SequenceFile類/139
7.4.2 MapFile類/144
7.4.3 ArrayFile、SetFile和BloomMapFile/146
7.5 本章小結/148
第8章 下一代MapReduce:YARN/149
8.1 MapReduce V2設計需求/150
8.2 MapReduce V2主要思想和架構/151
8.3 MapReduce V2設計細節/153
8.4 MapReduce V2優勢/156
8.5 本章小結/156
第9章 HDFS詳解/157
9.1 Hadoop的文件係統/158
9.2 HDFS簡介/160
9.3 HDFS體係結構/161
9.3.1 HDFS的相關概念/161
9.3.2 HDFS的體係結構/162
9.4 HDFS的基本操作/164
9.4.1 HDFS的命令行操作/164
9.4.2 HDFS的Web界麵/165
9.5 HDFS常用Java API詳解/166
9.5.1 使用Hadoop URL讀取數據/166
9.5.2 使用FileSystem API讀取數據/167
9.5.3 創建目錄/169
9.5.4 寫數據/169
9.5.5 刪除數據/171
9.5.6 文件係統查詢/171
9.6 HDFS中的讀寫數據流/175
9.6.1 文件的讀取/175
9.6.2 文件的寫入/176
9.6.3 一緻性模型/178
9.7 HDFS命令詳解/179
9.7.1 通過distcp進行並行復製/179
9.7.2 HDFS的平衡/180
9.7.3 使用Hadoop歸檔文件/180
9.7.4 其他命令/183
9.8 WebHDFS/186
9.8.1 WebHDFS的配置/186
9.8.2 WebHDFS命令/186
9.9 本章小結/190
第10章 Hadoop的管理/191
10.1 HDFS文件結構/192
10.2 Hadoop的狀態監視和管理工具/196
10.2.1 審計日誌/196
10.2.2 監控日誌/196
10.2.3 Metrics/197
10.2.4 Java管理擴展 /199
10.2.5 Ganglia/200
10.2.6 Hadoop管理命令/202
10.3 Hadoop集群的維護/206
10.3.1 安全模式/206
10.3.2 Hadoop的備份/207
10.3.3 Hadoop的節點管理/208
10.3.4 係統升級/210
10.4 本章小結/212
第11章 Hive詳解/213
11.1 Hive簡介/214
11.1.1 Hive的數據存儲/214
11.1.2 Hive的元數據存儲/216
11.2 Hive的基本操作/216
11.2.1 在集群上安裝Hive/216
11.2.2 配置MySQL存儲Hive元數據/218
11.2.3 配置Hive/220
11.3 Hive QL詳解/221
11.3.1 數據定義(DDL)操作/221
11.3.2 數據操作(DML)/231
11.3.3 SQL操作/233
11.3.4 Hive QL使用實例/235
11.4 Hive網絡(Web UI)接口/237
11.4.1 Hive網絡接口配置/237
11.4.2 Hive網絡接口操作實例/238
11.5 Hive的JDBC接口//241
11.5.1 Eclipse環境配置/241
11.5.2 程序實例/241
11.6 Hive的優化/244
11.7 本章小結/246
第12章 HBase詳解/247
12.1 HBase簡介/248
12.2 HBase的基本操作/249
12.2.1 HBase的安裝/249
12.2.2 運行HBase /253
12.2.3 HBase Shell/255
12.2.4 HBase配置/258
12.3 HBase體係結構/260
12.3.1 HRegion/260
12.3.2 HRegion服務器/261
12.3.3 HBase Master服務器/262
12.3.4 ROOT錶和META錶/262
12.3.5 ZooKeeper/263
12.4 HBase數據模型/263
12.4.1 數據模型/263
12.4.2 概念視圖/264
12.4.3 物理視圖/264
12.5 HBase與RDBMS/265
12.6 HBase與HDFS/266
12.7 HBase客戶端/266
12.8 Java API /267
12.9 HBase編程 /273
12.9.1 使用Eclipse開發HBase應用程序/273
12.9.2 HBase編程/275
12.9.3 HBase與MapReduce/278
12.10 模式設計/280
12.10.1 模式設計應遵循的原則/280
12.10.2 學生錶/281
12.10.3 事件錶/282
12.11 本章小結/283
第13章 Mahout詳解/284
13.1 Mahout簡介/285
13.2 Mahout的安裝和配置/285
13.3 Mahout API簡介/288
13.4 Mahout中的頻繁模式挖掘/290
13.4.1 什麼是頻繁模式挖掘/290
13.4.2 Mahout中的頻繁模式挖掘/290
13.5 Mahout中的聚類和分類/292
13.5.1 什麼是聚類和分類/292
13.5.2 Mahout中的數據錶示/293
13.5.3 將文本轉化成嚮量/294
13.5.4 Mahout中的聚類、分類算法/295
13.5.5 算法應用實例/299
13.6 Mahout應用:建立一個推薦引擎/304
13.6.1 推薦引擎簡介/304
13.6.2 使用Taste構建一個簡單的推薦引擎/305
13.6.3 簡單分布式係統下基於産品的推薦係統簡介/307
13.7 本章小結/309
第14章 Pig詳解/310
14.1 Pig簡介/311
14.2 Pig的安裝和配置 /311
14.2.1 Pig的安裝條件/311
14.2.2 Pig的下載、安裝和配置/312
14.2.3 Pig運行模式/313
14.3 Pig Latin語言/315
14.3.1 Pig Latin語言簡介/315
14.3.2 Pig Latin的使用/316
14.3.3 Pig Latin的數據類型/318
14.3.4 Pig Latin關鍵字/319
14.4 用戶定義函數 /323
14.4.1 編寫用戶定義函數/324
14.4.2 使用用戶定義函數/325
14.5 Zebra簡介 /326
14.5.1 Zebra的安裝/326
14.5.2 Zebra的使用簡介/327
14.6 Pig實例 /328
14.6.1 Local模式/328
14.6.2 MapReduce模式/330
14.7 Pig進階/331
14.7.1 數據實例/331
14.7.2 Pig數據分析/332
14.8 本章小結/336
第15章 ZooKeeper詳解/337
15.1 ZooKeeper簡介/338
15.1.1 ZooKeeper的設計目標/338
15.1.2 數據模型和層次命名空間/339
15.1.3 ZooKeeper中的節點和臨時節點/339
15.1.4 ZooKeeper的應用/340
15.2 ZooKeeper的安裝和配置/340
15.2.1 安裝ZooKeeper /340
15.2.2 配置ZooKeeper/346
15.2.3 運行ZooKeeper/348
15.3 ZooKeeper的簡單操作/350
15.3.1 使用ZooKeeper命令的簡單操作步驟/350
15.3.2 ZooKeeper API的簡單使用/352
15.4 ZooKeeper的特性/355
15.4.1 ZooKeeper的數據模型/355
15.4.2 ZooKeeper會話及狀態/356
15.4.3 ZooKeeper watches/357
15.4.4 ZooKeeper ACL/358
15.4.5 ZooKeeper的一緻性保證/359
15.5 使用ZooKeeper進行Leader選舉/359
15.6 ZooKeeper鎖服務/360
15.6.1 ZooKeeper中的鎖機製/360
15.6.2 ZooKeeper提供的一個寫鎖的實現/361
15.7 使用ZooKeeper創建應用程序 /363
15.7.1 使用Eclipse開發ZooKeeper應用程序/363
15.7.2 應用程序實例/365
15.8 BooKeeper/369
15.9 本章小結/371
第16章 Avro詳解/372
16.1 Avro介紹/373
16.1.1 模式聲明/374
16.1.2 數據序列化/378
16.1.3 數據排列順序/380
16.1.4 對象容器文件 /381
16.1.5 協議聲明/382
16.1.6 協議傳輸格式/383
16.1.7 模式解析/386
16.2 Avro的C/C++實現/387
16.3 Avro的Java實現/398
16.4 GenAvro(Avro IDL)語言/402
16.5 Avro SASL概述/406
16.6 本章小結/407
第17章 Chukwa詳解/409
17.1 Chukwa簡介/410
17.2 Chukwa架構/411
17.2.1 客戶端及其數據模型/412
17.2.2 收集器/413
17.2.3 歸檔器和分離解析器/414
17.2.4 HICC/415
17.3 Chukwa的可靠性/415
17.4 Chukwa集群搭建/416
17.4.1 基本配置要求/416
17.4.2 Chukwa的安裝/416
17.4.3 Chukwa的運行/419
17.5 Chukwa數據流的處理/424
17.6 Chukwa與其他監控係統比較/425
17.7 本章小結/426
本章參考資料/426
第18章 Hadoop的常用插件與開發/428
18.1 Hadoop Studio的介紹和使用/429
18.1.1 Hadoop Studio的介紹/429
18.1.2 Hadoop Studio的安裝配置/430
18.1.3 Hadoop Studio的使用舉例/430
18.2 Hadoop Eclipse的介紹和使用/436
18.2.1 Hadoop Eclipse的介紹/436
18.2.2 Hadoop Eclipse的安裝配置/437
18.2.3 Hadoop Eclipse的使用舉例/438
18.3 Hadoop Streaming的介紹和使用/440
18.3.1 Hadoop Streaming的介紹/440
18.3.2 Hadoop Streaming的使用舉例/444
18.3.3 使用Hadoop Streaming常見的問題/446
18.4 Hadoop Libhdfs的介紹和使用/448
18.4.1 Hadoop Libhdfs的介紹/448
18.4.2 Hadoop Libhdfs的安裝配置/448
18.4.3 Hadoop Libhdfs API簡介/448
18.4.4 Hadoop Libhdfs的使用舉例/449
18.5 本章小結/450
第19章 企業應用實例/452
19.1 Hadoop在Yahoo!的應用/453
19.2 Hadoop在eBay的應用/455
19.3 Hadoop在百度的應用/457
19.4 即刻搜索中的Hadoop/460
19.4.1 即刻搜索簡介/460
19.4.2 即刻Hadoop應用架構/460
19.4.3 即刻Hadoop應用分析/463
19.5 Facebook中的Hadoop和HBase/463
19.5.1 Facebook中的任務特點/464
19.5.2 MySQL VS Hadoop+HBase/466
19.5.3 Hadoop和HBase的實現/467
19.6 本章小結/472
本章參考資料/472
附錄A 雲計算在綫檢測平颱/474
附錄B Hadoop安裝、運行與使用說明/484
附錄C 使用DistributedCache的MapReduce程序/491
附錄D 使用ChainMapper和ChainReducer的MapReduce程序/495
· · · · · · (
收起)