目錄
譯者序
作者簡介
前言
第1章為什麼會有大數據1
1.1什麼是大數據1
1.2大數據技術背後的核心思想2
1.2.1把數據分發到多個節點2
1.2.2把計算邏輯移動到數據附近3
1.2.3計算節點進行本地數據處理3
1.2.4優選順序讀,次之隨機讀4
1.2.5一個例子4
1.3大數據的編程模型5
1.3.1大規模並行處理數據庫係統5
1.3.2內存數據庫係統6
1.3.3MapReduce係統6
1.3.4整體同步並行係統8
1.4大數據和事務性係統8
1.5我們能處理多大的數據量9
1.5.1一個計算密集型的例子10
1.5.2Amdhal定律10
1.6大數據商業用例11
1.7本章小結12
第2章Hadoop中的概念13
2.1Hadoop簡介13
2.2MapReduce編程模型簡介15
2.3Hadoop係統的組成19
2.3.1Hadoop 分布式文件係統20
2.3.2輔助名稱節點25
2.3.3任務跟蹤器26
2.3.4作業跟蹤器26
2.4Hadoop 2.027
2.4.1容器29
2.4.2節點管理器29
2.4.3資源管理器30
2.4.4應用程序管理器30
2.4.5分步詳解YARN請求31
2.5HDFS 的高可用性33
2.6本章小結33
第3章初識Hadoop框架34
3.1安裝類型34
3.1.1單機模式35
3.1.2僞分布式集群模式35
3.1.3多節點集群安裝模式35
3.1.4基於Amazon EMR預安裝模式35
3.2使用Cloudera虛擬機搭建開發環境36
3.3一個MapReduce程序的組成37
3.4第一個Hadoop程序38
3.4.1以本地模式運行程序的必要條件39
3.4.2使用舊API編寫的單詞計數程序39
3.4.3構建程序42
3.4.4在集群模式下運行單詞計數程序42
3.4.5使用新API編寫的單詞計數程序43
3.4.6構建程序44
3.4.7在集群模式下運行單詞計數程序45
3.5Hadoop作業中的第三方函數庫45
3.6本章小結50
第4章Hadoop係統管理51
4.1Hadoop的配置文件51
4.2配置Hadoop守護進程52
4.3Hadoop配置文件的優先級53
4.4深入探究Hadoop配置文件54
4.4.1core—site.xml54
4.4.2hdfs—*.xml55
4.4.3mapred—site.xml56
4.4.4yarn—site.xml58
4.4.5YARN中的內存分配60
4.5調度器61
4.5.1計算能力調度器62
4.5.2公平調度器65
4.5.3公平調度器配置65
4.5.4 yarn—site.xml 配置66
4.5.5策略文件的格式和配置67
4.5.6按照drf策略來確定優勢資源的分配68
4.6從屬文件69
4.7機架感知69
4.8 集群管理工具71
4.8.1檢查HDFS71
4.8.2 HDFS管理命令行73
4.8.3 均衡HDFS上的數據分布75
4.8.4從HDFS中復製海量數據76
4.9本章小結76
第5章MapReduce開發基礎78
5.1 Hadoop和數據處理78
5.2 航空公司數據集介紹79
5.2.1 準備開發環境80
5.2.2 準備Hadoop係統81
5.3 MapReduce編程模式81
5.3.1 隻有Map階段的作業(SELECT和WHERE查詢)82
5.3.2 問題定義—SELECT子句82
5.3.3 問題定義—WHERE子句90
5.3.4 Map和Reduce作業(聚閤查詢)93
5.3.5 問題定義—GROUP BY和SUM子句93
5.3.6 應用Combiner提高Aggregation性能99
5.3.7 問題定義—優化後的Aggregators99
5.3.8 Partitioner的作用104
5.3.9 問題定義—按月分離航空數據105
5.4 綜閤分析108
5.5 本章小結110
第6章MapReduce開發進階111
6.1 MapReduce編程模式111
6.2 Hadoop I/O 介紹111
6.3 問題定義—排序114
6.3.1 主要挑戰:全排序115
6.3.2 在Cluster中運行Sorting作業125
6.3.3 僅根據Writable鍵排序125
6.3.4 根據排序迴顧Hadoop的關鍵特性128
6.4 問題定義—分析連續的記錄128
6.4.1 支持二次排序的重要組件129
6.4.2 在沒有Grouping Comparator的情況下實現Secondary Sort136
6.4.3 在Cluster中運行SecondarySort作業137
6.4.4 利用Secondary Sort迴顧Hadoop的關鍵特性137
6.5 問題定義—使用MapReducer進行連接138
6.5.1 處理多輸入:Multiple—Inputs 類138
6.5.2 具備多個輸入的Mapper類139
6.5.3 自定義 Partitioner: Carrier—CodeBasedPartioner141
6.5.4 在Reducer中實現連接141
6.5.5 在集群中運行MapReduce連接作業143
6.5.6 探討與MapReduce相關的Hadoop主要特性144
6.6 問題定義—使用Map—Only 作業進行連接144
6.6.1 基於DistributeCache的解決方案145
6.6.2 在集群中運行Map—Only的連接作業147
6.6.3 總結探討Map—Only連接時的Hadoop關鍵特性149
6.7 在MR作業中保存結果到多輸齣文件149
6.8 使用計數器收集統計數據151
6.9 本章小結153
第7章 Hadoop輸入/輸齣155
7.1 壓縮方式155
7.1.1 壓縮內容的選擇156
7.1.2 各種壓縮方式157
7.1.3 配置壓縮方式158
7.2 Hadoop的I/O處理過程內部159
7.2.1 Inputformat159
7.2.2 OutputFormat161
7.2.3 自定義OutputFormat:將文本轉換成XML161
7.2.4 自定義 InputFormat:使用自定義的XML文件165
7.3 Hadoop文件173
7.3.1 SequenceFile173
7.3.2 MapFiles178
7.3.3 Avro Files180
7.4 本章小結185
第8章 測試Hadoop程序186
8.1 迴顧一下單詞統計的程序186
8.2 MRUnit概述188
8.2.1 安裝MRUnit188
8.2.2 MRUnit 核心類188
8.2.3 編寫一個MRUnit測試用例189
8.2.4 測試計數器191
8.2.5 MRUnit的特性194
8.2.6 MRUnit的局限性194
8.3 用LocalJobRunner測試195
8.3.1 setUp( )方法196
8.3.2 LocalJobRunner的局限性197
8.4 用MiniMRCluster測試198
8.4.1 配置開發環境198
8.4.2 MiniMRCluster例子199
8.4.3 MiniMRCluster的局限性201
8.5 對訪問網絡資源的MR作業進行測試202
8.6 本章小結202
第9章Hadoop的監控203
9.1 在Hadoop MapReduce Jobs中寫日誌消息203
9.2 在Hadoop MapReduce Jobs中查看日誌消息206
9.3 在Hadoop 2.x中使用日誌管理208
9.3.1 Hadoop 2.x中的日誌存儲208
9.3.2 日誌管理提升210
9.3.3 使用基於Web的界麵查看日誌210
9.3.4 命令行界麵211
9.3.5 日誌的保存211
9.4 Hadoop集群性能監控211
9.5 使用YARN REST API212
9.6 使用供應商工具管理Hadoop集群213
9.7 本章小結214
第10章使用Hadoop構建數據倉庫215
10.1 Apache Hive215
10.1.1 安裝Hive216
10.1.2 Hive的架構217
10.1.3 元數據存儲217
10.1.4 HiveQL編譯基礎217
10.1.5 Hive使用的概念218
10.1.6 HiveQL編譯細節222
10.1.7 數據定義語言226
10.1.8 數據操作語言226
10.1.9 擴展接口227
10.1.10 Hive腳本229
10.1.11 性能錶現229
10.1.12 整閤MapReduce230
10.1.13 創建分區230
10.1.14 用戶定義函數232
10.2 Impala234
10.2.1 Impala架構234
10.2.2 Impala特性235
10.2.3 Impala的局限235
10.3 Shark235
10.4 本章小結237
第11章使用Pig進行數據處理238
11.1 Pig簡介238
11.2 運行Pig240
11.2.1 在Grunt Shell中執行241
11.2.2 執行Pig腳本241
11.2.3 嵌入式Java程序242
11.3 Pig Latin243
11.3.1 Pig腳本中的注釋243
11.3.2 Pig語句的執行243
11.3.3 Pig命令244
11.4 UDF249
11.4.1 Mapper中的Eval函數調用249
11.4.2 Reducer中的Eval函數調用250
11.4.3 編寫並使用自定義Filter—Func256
11.5 Pig與Hive對比258
11.6 Crunch API259
11.6.1 Crunch與Pig的區彆259
11.6.2 Crunch管道的例子260
11.7 本章小結265
第12章HCatalog和企業級Hadoop266
12.1 HCataolg和企業級數據倉庫用戶266
12.2 HCatalog技術背景簡介 267
12.2.1 HCatalog命令行接口269
12.2.2 WebHCat269
12.2.3 HCatalog的MapReduce接口270
12.2.4 HCatalog的Pig接口273
12.2.5 HCatalog通知接口274
12.3 HCatalog的安全和認證機製274
12.4 完整的解決方案275
12.5 本章小結275
第13章使用Hadoop分析日誌277
13.1 日誌文件分析應用277
13.1.1 網絡分析277
13.1.2 安全規範與法務278
13.1.3 監控和報警279
13.1.4 物聯網279
13.2 分析步驟280
13.2.1 載入280
13.2.2 提取280
13.2.3 可視化281
13.3 Apache Flume281
13.4 Netflix Suro283
13.5 雲解決方案285
13.6 本章小結285
第14章使用HBase構建實時係統286
14.1 HBase是什麼286
14.2 典型的HBase用例場景287
14.3 HBase數據模型288
14.3.1 HBase邏輯視圖和客戶端視圖288
14.3.2 HBase與RDBMS的區彆289
14.3.3 HBase錶290
14.3.4 HBase單元格290
14.3.5 HBase列簇290
14.4 HBase命令和API291
14.4.1 獲取命令列錶:幫助命令291
14.4.2 創建錶:create命令292
14.4.3 嚮錶中加入行:put命令293
14.4.4 從錶中檢索行:get命令293
14.4.5 讀取多行:scan命令293
14.4.6 統計錶中的行數:count命令293
14.4.7 刪除行:delete命令294
14.4.8 清空錶:truncate命令294
14.4.9 刪除錶:drop命令294
14.4.10 更換錶:alter命令294
14.5 HBase架構295
14.5.1 HBase組件295
14.5.2 HBase中的壓縮與分區302
14.5.3 壓縮303
14.6 HBase配置概覽304
14.7 HBase應用程序設計305
14.7.1 長錶vs寬錶vs窄錶305
14.7.2 行鍵設計306
14.8 使用Java API操作HBase307
14.8.1 一切都是字節307
14.8.2 創建HBase錶307
14.8.3 使用HBaseAdmin類管理HBase308
14.8.4 使用Java API訪問數據308
14.9 HBase與MapReduce集成312
14.9.1 使用MapReduce任務讀取HBase錶312
14.9.2 HBase和MapReduce集群315
14.10 本章小結316
第15章Hadoop與數據科學317
15.1 Hadoop中的數據科學方法318
15.2 Apache Hama318
15.2.1 整體同步並行計算模型318
15.2.2 Hama Hello World!319
15.2.3 濛特卡洛方法321
15.2.4 K—Means聚類324
15.3 Apache Spark327
15.3.1 彈性分布式數據集(RDD)327
15.3.2 Spark與濛特卡洛算法328
15.3.3 Spark與KMeans聚類330
15.4 RHadoop332
15.5 本章小結333
第16章Hadoop與雲計算334
16.1 經濟性334
16.1.1 自有集群335
16.1.2 基於雲平颱的集群335
16.1.3 彈性336
16.1.4 按需付費336
16.1.5 競價336
16.1.6 混閤集群336
16.2 後勤保障337
16.2.1 導入/導齣337
16.2.2 數據保存337
16.3 安全性337
16.4 雲端應用模型338
16.5 雲服務商339
16.5.1 亞馬遜網絡服務(AWS)339
16.5.2 榖歌雲平颱341
16.5.3 微軟Azure342
16.5.4 選擇雲服務商342
16.6 案例學習: AWS342
16.6.1 EMR343
16.6.2 EC2345
16.7 本章小結348
第17章構建YARN應用程序349
17.1 YARN:通用分布式係統349
17.2 YARN:快速瀏覽351
17.3 創建YARN應用程序353
17.4 DownloadService.java類354
17.5 Client.java類356
17.5.1 從客戶端啓動應用管理器的步驟356
17.5.2 創建YarnClient357
17.5.3 配置應用程序357
17.5.4 啓動應用管理器360
17.5.5 監控應用360
17.6 ApplicationMaster.java362
17.6.1 啓動工作任務的步驟363
17.6.2 初始化應用管理器協議和容器管理協議364
17.6.3 在資源管理器中注冊應用管理器364
17.6.4 配置容器參數364
17.6.5 嚮資源管理器請求容器364
17.6.6 在任務節點上啓動容器364
17.6.7 等待容器結束工作任務365
17.6.8 在資源管理器中注銷應用管理器365
17.7 運行應用管理器367
17.7.1 在非托管模式中啓動應用管理器367
17.7.2 在托管模式中啓動應用管理器367
17.8 本章小結367
附錄A安裝Hadoop
附錄B使用Maven和Eclipse
附錄CApache Ambari
· · · · · · (
收起)