內容簡介
本書採用理論與實踐相結合的方式,全面介紹了Hadoop大數據技術。主要內容包括初識Hadoop大數據技術、Hadoop環境配置,分散式檔案系統HDFS、資源調度框架YARN、分散式計算框架MapReduce、大數據數據倉庫Hive、分散式資料庫HBase、查詢大型半結構化數據集的語言Pig、分散式日誌採集工具Flume、分散式資料庫與傳統資料庫數據相互轉換工具Sqoop。
圖書目錄
第1章 初識Hadoop大數據技術 1
1.1 大數據技術概述 1
1.1.1 大數據產生的背景 1
1.1.2 大數據的定義 2
1.1.3 大數據技術的發展 2
1.2 Google的“三駕馬車” 3
1.2.1 GFS的思想 3
1.2.2 MapReduce的思想 4
1.2.3 BigTable的思想 6
1.3 Hadoop概述 8
1.3.1 Hadoop對Google公司三篇論文思想的實現 8
1.3.2 Hadoop的發展歷史 9
1.3.3 Hadoop版本的演變 11
1.3.4 Hadoop的發行版本 12
1.3.5 Hadoop的特點 12
1.4 Hadoop生態圈 12
1.5 Hadoop的典型套用場景與套用架構 13
1.5.1 Hadoop的典型套用場景 13
1.5.2 Hadoop的典型套用架構 14
習題 15
第2章 Hadoop環境設定 16
2.1 安裝前準備 16
2.1.1 安裝虛擬機 17
2.1.2 安裝Ubuntu作業系統 20
2.1.3 關閉防火牆 22
2.1.4 SSH安裝 22
2.1.5 安裝Xshell及Xftp 22
2.1.6 安裝JDK 24
2.1.7 下載Hadoop並解壓 25
2.1.8 克隆主機 27
2.2 Hadoop的安裝 28
2.2.1 安裝單機模式 28
2.2.2 安裝偽分散式模式 29
2.2.3 安裝完全分散式模式 35
習題 41
實驗 搭建Hadoop偽分散式模式環境 42
第3章 HDFS 44
3.1 HDFS簡介 44
3.2 HDFS的組成與架構 45
3.2.1 NameNode 45
3.2.2 DataNode 46
3.2.3 SecondaryNameNode 46
3.3 HDFS的工作機制 47
3.3.1 機架感知與副本冗餘存儲策略 47
3.3.2 檔案讀取 49
3.3.3 檔案寫入 50
3.3.4 數據容錯 52
3.4 HDFS操作 53
3.4.1 通過Web界面進行HDFS操作 53
3.4.2 通過HDFS Shell進行HDFS操作 54
3.4.3 通過HDFS API進行HDFS操作 60
3.5 HDFS的高級功能 68
3.5.1 安全模式 68
3.5.2 資源回收筒 69
3.5.3 快照 70
3.5.4 配額 71
3.5.5 高可用性 71
3.5.6 聯邦 72
習題 74
實驗1 通過Shell命令訪問HDFS 74
實驗2 熟悉基於IDEA+Maven的Java開發環境 77
實驗3 通過API訪問HDFS 86
第4章 YARN 90
4.1 YARN產生的背景 90
4.2 初識YARN 92
4.3 YARN的架構 93
4.3.1 YARN架構概述 93
4.3.2 YARN中套用運行的機制 94
4.3.3 YARN中任務進度的監控 94
4.3.4 MapReduce 1與YARN的組成對比 95
4.4 YARN的調度器 95
4.4.1 先進先出調度器 95
4.4.2 容器調度器 96
4.4.3 公平調度器 97
4.4.4 三種調度器的比較 98
習題 98
第5章 MapReduce 99
5.1 MapReduce概述 99
5.1.1 MapReduce是什麼 99
5.1.2 MapReduce的特點 99
5.1.3 MapReduce不擅長的場景 100
5.2 MapReduce編程模型 100
5.2.1 MapReduce編程模型概述 100
5.2.2 MapReduce編程實例 101
5.3 MapReduce編程進階 112
5.3.1 MapReduce的輸入格式 112
5.3.2 MapReduce的輸出格式 114
5.3.3 分區 115
5.3.4 合併 118
5.4 MapReduce的工作機制 119
5.4.1 MapReduce作業的運行機制 119
5.4.2 進度和狀態的更新 120
5.4.3 Shuffle 121
5.5 MapReduce編程案例 122
5.5.1 排序 122
5.5.2 去重 126
5.5.3 多表查詢 127
習題 129
實驗1 分析和編寫WordCount程式 130
實驗2 MapReduce序列化、分區實驗 131
實驗3 使用MapReduce求出各年銷售筆數、各年銷售總額 134
實驗4 使用MapReduce統計用戶在搜狗上的搜尋數據 136
第6章 HBase、Hive、Pig 139
6.1 HBase 139
6.1.1 行式存儲與列式存儲 139
6.1.2 HBase簡介 140
6.1.3 HBase的數據模型 141
6.1.4 HBase的物理模型 143
6.1.5 HBase的系統架構 144
6.1.6 HBase的安裝 147
6.1.7 訪問HBase 152
6.2 Hive 157
6.2.1 安裝Hive 157
6.2.2 Hive的架構與工作原理 160
6.2.3 Hive的數據類型與存儲格式 163
6.2.4 Hive的數據模型 167
6.2.5 查詢數據 169
6.2.6 用戶定義函式 170
6.3 Pig 171
6.3.1 Pig概述 171
6.3.2 安裝Pig 172
6.3.3 Pig Latin程式語言 172
6.3.4 Pig代碼實例 177
6.3.5 用戶自定義函式 179
習題 181
實驗1 HBase實驗——安裝和配置(可選) 181
實驗2 HBase實驗——通過HBase Shell訪問HBase(可選) 185
實驗3 HBase實驗——通過Java API訪問HBase 187
實驗4 HBase實驗——通過Java API開發基於HBase的MapReduce程式 189
實驗5 Hive實驗——Metastore採用Local模式(MySQL資料庫)搭建Hive環境(可選) 191
實驗6 Hive實驗——Hive常用操作 193
實驗7 Pig實驗——安裝和使用Pig(可選) 194
實驗8 Pig實驗——使用Pig Latin操作員工表和部門表 195
第7章 Flume 198
7.1 Flume產生的背景 198
7.2 Flume簡介 198
7.3 Flume的安裝 199
7.4 Flume的架構 200
7.5 Flume的套用 201
7.5.1 Flume的組件類型及其配置項 201
7.5.2 Flume的配置和運行方法 206
7.5.3 Flume配置示例 207
7.6 Flume的工作方式 209
習題 210
實驗1 Flume的配置與使用1——Avro Source + Memory Channel + Logger Sink 211
實驗2 Flume的配置與使用2——Syslogtcp Source + Memory Channel + HDFS Sink 212
實驗3 Flume的配置與使用3——Exec Source + Memory Channel + Logger Sink 213
第8章 Sqoop 214
8.1 Sqoop背景簡介 214
8.2 Sqoop的基本原理 215
8.3 Sqoop的安裝與部署 216
8.3.1 下載與安裝 216
8.3.2 配置Sqoop 217
8.4 Sqoop套用 219
8.4.1 列出MySQL資料庫的基本信息 219
8.4.2 MySQL和HDFS數據互導 219
8.4.3 MySQL和Hive數據互導 220
習題 221
實驗 Sqoop常用功能的使用 222
第9章 ZooKeeper 227
9.1 ZooKeeper簡介 227
9.2 ZooKeeper的安裝 228
9.2.1 單機模式 228
9.2.2 集群模式 229
9.3 ZooKeeper的基本原理 231
9.3.1 Paxos算法 231
9.3.2 Zab算法 232
9.3.3 ZooKeeper的架構 232
9.3.4 ZooKeeper的數據模型 233
9.4 ZooKeeper的簡單操作 235
9.4.1 通過ZooKeeper Shell命令操作ZooKeeper 235
9.4.2 通過ZooInspector工具操作ZooKeeper 238
9.4.3 通過Java API操作ZooKeeper 238
9.5 ZooKeeper的特性 239
9.5.1 會話 239
9.5.2 臨時節點 240
9.5.3 順序節點 240
9.5.4 事務操作 241
9.5.5 版本號 241
9.5.6 監視 242
9.6 ZooKeeper的套用場景 243
9.6.1 Master選舉 244
9.6.2 分散式鎖 245
習題 246
實驗 ZooKeeper的3種訪問方式 246
第10章 Ambari 249
10.1 Ambari簡介 249
10.1.1 背景 249
10.1.2 Ambari的主要功能 250
10.2 Ambari的安裝 250
10.2.1 安裝前準備 250
10.2.2 安裝Ambari 254
10.3 利用Ambari管理Hadoop集群 257
10.3.1 安裝與配置HDP集群 258
10.3.2 節點的擴展 264
10.3.3 啟用HA 267
10.4 Ambari的架構和工作原理 271
10.4.1 Ambari的總體架構 271
10.4.2 Ambari Agent 272
10.4.3 Ambari Server 272
習題 273
第11章 Mahout 274
11.1 Mahout簡介 274
11.1.1 什麼是Mahout 274
11.1.2 Mahout能做什麼 275
11.2 Taste簡介 276
11.2.1 DataModel 276
11.2.2 Similarity 277
11.2.3 UserNeighborhood 277
11.2.4 Recommender 277
11.2.5 RecommenderEvaluator 277
11.2.6 RecommenderIRStatsEvaluator 278
11.3 使用Taste構建推薦系統 278
11.3.1 創建Maven項目 278
11.3.2 導入Mahout依賴 278
11.3.3 獲取電影評分數據 278
11.3.4 編寫基於用戶的推薦 279
11.3.5 編寫基於物品的推薦 280
11.3.6 評價推薦模型 281
11.3.7 獲取推薦的查準率和查全率 281
習題 282
實驗 基於Mahout的電影推薦系統 283
綜合實驗 搜狗日誌查詢分析(MapReduce+Hive綜合實驗) 284
參考文獻 287