" 目錄
第1章 初識Hadoop 1
1.1 數據!數據! 1
1.2 數據的存儲與分析 3
1.3 相較於其他係統的優勢 4
1.3.1 關係型數據庫管理係統 5
1.3.2 網格計算 7
1.3.3 誌願計算 9
1.4 Hadoop發展簡史 10
1.5 Apache Hadoop和Hadoop生態係統 14
1.6 Hadoop的發行版本 15
1.6.1 本書包含的內容 16
1.6.2 兼容性 17
第2章 關於MapReduce 19
2.1 氣象數據集 19
2.2 使用Unix工具來分析數據 21
2.3 使用Hadoop來分析數據 23
2.3.1 map和reduce 23
2.3.2 Java MapReduce 24
2.4 橫嚮擴展 33
2.4.1 數據流 34
2.4.2 combiner函數 37
2.4.3 運行分布式的MapReduce作業 39
2.5 Hadoop Streaming 40
2.5.1 Ruby版本 40
2.5.2 Python版本 43
2.6 Hadoop Pipes 44
第3章 Hadoop分布式文件係統 49
3.1 HDFS的設計 49
3.2 HDFS的概念 51
3.2.1 數據塊 51
3.2.2 namenode和datanode 52
3.2.3 聯邦HDFS 53
3.2.4 HDFS的高可用性 54
3.3 命令行接口 56
3.4 Hadoop文件係統 58
3.5 Java接口 62
3.5.1 從Hadoop URL讀取數據 63
3.5.2 通過FileSystem API讀取數據 64
3.5.3 寫入數據 68
3.5.4 目錄 70
3.5.5 查詢文件係統 70
3.5.6 刪除數據 75
3.6 數據流 75
3.6.1 剖析文件讀取 75
3.6.2 剖析文件寫入 78
3.6.3 一緻模型 81
3.7 通過Flume和Sqoop導入數據 83
3.8 通過distcp並行復製 84
3.9 Hadoop存檔 86
3.9.1 使用Hadoop存檔工具 86
3.9.2 不足 88
第4章 Hadoop的I/O操作 89
4.1 數據完整性 89
4.1.1 HDFS的數據完整性 89
4.1.2 LocalFileSystem 91
4.1.3 ChecksumFileSystem 91
4.2 壓縮 92
4.2.1 codec 93
4.2.2 壓縮和輸入分片 98
4.2.3 在MapReduce中使用壓縮 99
4.3 序列化 102
4.3.1 Writable接口 103
4.3.2 Writable類 105
4.3.3 實現定製的Writable集閤 114
4.3 序列化框架 118
4.4 Avro 121
4.4.1 Avro數據類型和模式 122
4.4.2 內存中的序列化和反序列化 126
4.4.3 Avro數據文件 129
4.4.4 互操作性 130
4.4.5 模式的解析 133
4.4.6 排列順序 135
4.4.7 關於Avro MapReduce 137
4.4.8 使用Avro MapReduce進行排序 141
4.4.9 其他語言的Avro MapReduce 143
4.5 基於文件的數據結構 143
4.5.1 關於SequenceFile 143
4.5.2 關於MapFile 151
第5章 MapReduce應用開發 157
5.1 用於配置的API 157
5.1.1 資源閤並 159
5.1.2 可變的擴展 160
5.2 配置開發環境 160
5.2.1 管理配置 162
5.2.2 輔助類GenericOptionsParser,Tool和ToolRunner 165
5.3 用MRUnit來寫單元測試 168
5.3.1 關於Mapper 168
5.3.2 關於Reducer 170
5.4 本地運行測試數據 171
5.4.1 在本地作業運行器上運行作業 171
5.4.2 測試驅動程序 175
5.5 在集群上運行 176
5.5.1 打包作業 177
5.5.2 啓動作業 179
5.5.3 MapReduce的Web界麵 181
5.5.4 獲取結果 184
5.5.5 作業調試 185
5.5.6 Hadoop日誌 190
5.5.7 遠程調試 192
5.6 作業調優 193
5.7 MapReduce的工作流 196
5.7.1 將問題分解成MapReduce作業 197
5.7.2 關於JobControl 198
5.7.3 關於Apache Oozie 199
第6章 MapReduce的工作機製 205
6.1 剖析MapReduce作業運行機製 205
6.1.1 經典的MapReduce (MapReduce 1) 206
6.1.2 YARN (MapReduce 2) 213
6.2 失敗 219
6.2.1 經典MapReduce中的失敗 219
6.2.2 YARN中的失敗 222
6.3 作業的調度 224
6.3.1 公平調度器 225
6.3.2 容量調度器 225
6.4 shuffle和排序 226
6.4.1 map端 226
6.4.2 reduce端 228
6.4.3 配置調優 230
6.5 任務的執行 232
6.5.1 任務執行環境 232
6.5.2 推測執行 233
6.5.3 關於OutputCommitters 235
6.5.4 任務JVM重用 237
6.5.5 跳過壞記錄 238
第7章 MapReduce的類型與格式 241
7.1 MapReduce的類型 241
7.1.1 默認的MapReduce作業 245
7.1.2 默認的Streaming作業 249
7.2 輸入格式 252
7.2.1 輸入分片與記錄 252
7.2.2 文本輸入 264
7.2.3 二進製輸入 268
7.2.4 多個輸入 269
7.2.5 數據庫輸入(和輸齣) 270
7.3 輸齣格式 271
7.3.1 文本輸齣 271
7.3.2 二進製輸齣 272
7.3.3 多個輸齣 272
7.3.4 延遲輸齣 277
7.3.5 數據庫輸齣 277
第8章 MapReduce的特性 279
8.1 計數器 279
8.1.1 內置計數器 279
8.1.2 用戶定義的Java計數器 284
8.1.3 用戶定義的Streaming計數器 289
8.2 排序 289
8.2.1 準備 290
8.2.2 部分排序 291
8.2.3 全排序 295
8.2.4 輔助排序 299
8.3 連接 305
8.3.1 map端連接 307
8.3.2 reduce端連接 307
8.4 邊數據分布 311
8.4.1 利用JobConf來配置作業 311
8.4.2 分布式緩存 311
8.5 MapReduce庫類 318
第9章 構建Hadoop集群 321
9.1 集群規範 321
9.2 集群的構建和安裝 325
9.2.1 安裝Java 326
9.2.2 創建Hadoop用戶 326
9.2.3 安裝Hadoop 326
9.2.4 測試安裝 327
9.3 SSH配置 327
9.4 Hadoop配置 328
9.4.1 配置管理 329
9.4.2 環境設置 332
9.4.3 Hadoop守護進程的關鍵屬性 336
9.4.4 Hadoop守護進程的地址和端口 341
9.4.5 Hadoop的其他屬性 343
9.4.6 創建用戶帳號 346
9.5 YARN配置 346
9.5.1 YARN守護進程的重要屬性 347
9.5.2 YARN守護進程的地址和端口 350
9.6 安全性 352
9.6.1 Kerberos和Hadoop 353
9.6.2 委托令牌 355
9.6.3 其他安全性改進 356
9.7 利用基準評測程序測試Hadoop集群 358
9.7.1 Hadoop基準評測程序 358
9.7.2 用戶作業 361
9.8 雲端的Hadoop 361
第10章 管理Hadoop 367
10.1 HDFS 367
10.1.1 永久性數據結構 367
10.1.2 安全模式 373
10.1.3 日誌審計 375
10.1.4 工具 375
10.2 監控 380
10.2.1 日誌 381
10.2.2 度量 382
10.2.3 Java管理擴展(JMX) 385
10.3 維護 387
10.3.1 日常管理過程 387
10.3.2 委任和解除節點 389
10.3.3 升級 392
第11章 關於Pig 397
11.1 安裝與運行Pig 398
11.1.1 執行類型 399
11.1.2 運行Pig程序 400
11.1.3 Grunt 401
11.1.4 Pig Latin編輯器 401
11.2 示例 402
11.3 與數據庫進行比較 405
11.4 Pig Latin 406
11.4.1 結構 407
11.4.2 語句 408
11.4.3 錶達式 413
11.4.4 類型 414
11.4.5 模式 415
11.4.6 函數 420
11.4.7 宏 422
11.5 用戶自定義函數 423
11.5.1 過濾UDF 423
11.5.2 計算UDF 427
11.5.3 加載UDF 429
11.6 數據處理操作 432
11.6.1 數據的加載和存儲 432
11.6.2 數據的過濾 433
11.6.3 數據的分組與連接 436
11.6.4 數據的排序 441
11.6.5 數據的組閤和切分 442
11.7 Pig實戰 443
11.7.1 並行處理 443
11.7.2 參數代換 444
第12章 關於Hive 447
12.1 安裝Hive 448
12.2 示例 450
12.3 運行Hive 451
12.3.1 配置Hive 452
12.3.2 Hive服務 454
12.3.3 Metastore 456
12.4 Hive與傳統數據庫相比 458
12.4.1 讀時模式vs.寫時模式 458
12.4.2 更新、事務和索引 459
12.5 HiveQL 460
12.5.1 數據類型 461
12.5.2 操作與函數 463
12.6 錶 464
12.6.1 托管錶和外部錶 465
12.6.2 分區和桶 466
12.6.3 存儲格式 471
12.6.4 導入數據 477
12.6.5 錶的修改 479
12.6.6 錶的丟棄 480
12.7 查詢數據 480
12.7.1 排序和聚集 480
12.7.2 MapReduce腳本 481
12.7.3 連接 482
12.7.4 子查詢 486
12.7.5 視圖 486
12.8 用戶定義函數 488
12.8.1 寫UDF 489
12.8.2 寫UDAF 491
第13章 關於HBase 497
13.1 HBase基礎 497
13.2 概念 498
13.3.1 數據模型的“鏇風之旅” 498
13.3.2 實現 500
13.3 安裝 503
13.4 客戶端 506
13.4.1 Java 506
13.4.2 Avro、REST和Thrift 510
13.5 示例 511
13.5.1 模式 511
13.5.2 加載數據 512
13.5.3 Web查詢 516
13.6 HBase和RDBMS的比較 519
13.6.1 成功的服務 520
13.6.2 HBase 521
13.6.3 實例:HBase在Streamy.com的使用 522
13.7 Praxis 524
13.7.1 版本 524
13.7.2 HDFS 525
13.7.3 用戶界麵 526
13.7.4 度量 526
13.7.5 模式的設計 526
13.7.6 計數器 527
13.7.7 批量加載 528
第14章 關於ZooKeeper 529
14.1 安裝和運行ZooKeeper 530
14.2 示例 532
14.2.1 ZooKeeper中的組成員關係 533
14.2.2 創建組 534
14.2.3 加入組 536
14.2.4 列齣組成員 537
14.2.5 刪除組 539
14.3 ZooKeeper服務 540
14.3.1 數據模型 540
14.3.2 操作 543
14.3.3 實現 548
14.3.4 一緻性 549
14.3.5 會話 552
14.3.6 狀態 554
14.4 使用ZooKeeper來構建應用 555
14.4.1 配置服務 555
14.4.2 可復原的ZooKeeper應用 559
14.4.3 鎖服務 563
14.4.4 更多分布式數據結構和協議 565
14.5 生産環境中的ZooKeeper 567
14.5.1 可恢復性和性能 567
14.5.2 配置 568
第15章 關於Sqoop 571
15.1 獲取Sqoop 571
15.2 Sqoop連接器 573
15.3 一個導入的例子 573
15.4 生成代碼 577
15.5 深入瞭解數據庫導入 578
15.5.1 導入控製 580
15.5.2 導入和一緻性 581
15.5.3 直接模式導入 581
15.6 使用導入的數據 581
15.7 導入大對象 585
15.8 執行導齣 587
15.9 深入瞭解導齣功能 589
15.9.1 導齣與事務 590
15.9.2 導齣和SequenceFile 591
第16章 實例學習 593
16.1 Hadoop 在Last.fm的應用 593
16.1.1 Last.fm:社會音樂史上的革命 593
16.1.2 Hadoop在Last.fm中的應用 593
16.1.3 用Hadoop製作圖錶 594
16.1.4 Track Statistics程序 595
16.1.5 總結 602
16.2 Hadoop和Hive在Facebook的應用 603
16.2.1 Hadoop在Facebook的使用 603
16.2.2 虛構的使用樣例 606
16.2.3 Hive 609
16.2.4 存在的問題與未來工作計劃 613
16.3 Nutch搜索引擎 615
16.3.1 背景介紹 615
16.3.2 數據結構 616
16.3.3 Nutch係統利用Hadoop進行數據處理的精選實例 619
16.3.4 總結 630
16.4 Rackspace的日誌處理 631
16.4.1 要求/問題 631
16.4.2 簡史 632
16.4.3 選擇Hadoop 632
16.4.4 收集和存儲 632
16.4.5 對日誌的MapReduce處理 634
16.5 關於Cascading 640
16.5.1 字段、元組和管道 641
16.5.2 操作 644
16.5.3 Tap、Scheme和Flow 645
16.5.4 Cascading實戰 646
16.5.5 靈活性 650
16.5.6 Hadoop和Cascading在ShareThis的應用 650
16.5.7 總結 655
16.6 Apache Hadoop上萬億數量級排序 655
16.7 用Pig和Wukong探索10億數量級邊的網絡圖 659
16.7.1 社區判斷 661
16.7.2 每個人都在和我說話:Twitter迴復關係圖 661
16.7.3 對稱鏈接 664
16.7.4 社區提取 666
附錄A 安裝Apache Hadoop 669
附錄B 關於CDH 675
附錄C 準備NCDC氣象數據 677
"
· · · · · · (
收起)