前言
第1篇 Hadoop基礎知識
第1章 初識Hadoop 2
1.1 大數據初探 2
1.1.1 大數據技術 2
1.1.2 大數據技術框架 3
1.1.3 大數據的特點 3
1.1.4 大數據在各個行業中的應用 4
1.1.5 大數據計算模式 4
1.1.6 大數據與雲計算、物聯網的關係 4
1.2 Hadoop簡介 5
1.2.1 Hadoop應用現狀 6
1.2.2 Hadoop簡介與意義 6
1.3 小結 6
第2章 Hadoop的安裝與配置 7
2.1 虛擬機的創建 7
2.2 安裝Linux係統 10
2.3 配置網絡信息 11
2.4 剋隆服務器 12
2.5 SSH免密碼登錄 13
2.6 安裝和配置JDK 15
2.6.1 上傳安裝包 15
2.6.2 安裝JDK 16
2.6.3 配置環境變量 16
2.7 Hadoop環境變量配置 16
2.7.1 解壓縮Hadoop壓縮包 17
2.7.2 配置Hadoop的bin和sbin文件夾到環境變量中 17
2.7.3 修改/etc/hadoop/hadoop-env.sh 17
2.8 Hadoop分布式安裝 17
2.8.1 僞分布式安裝 17
2.8.2 完全分布式安裝 19
2.9 小結 21
第3章 Hadoop分布式文件係統 22
3.1 DFS介紹 22
3.1.1 什麼是DFS 22
3.1.2 DFS的結構 22
3.2 HDFS介紹 23
3.2.1 HDFS的概念及體係結構 23
3.2.2 HDFS的設計 23
3.2.3 HDFS的優點和缺點 24
3.2.4 HDFS的執行原理 24
3.2.5 HDFS的核心概念 25
3.2.6 HDFS讀文件流程 27
3.2.7 HDFS寫文件流程 28
3.2.8 Block的副本放置策略 29
3.3 Hadoop中HDFS的常用命令 30
3.3.1 對文件的操作 30
3.3.2 管理與更新 31
3.4 HDFS的應用 31
3.4.1 基於Shell的操作 31
3.4.2 基於Java API的操作 33
3.4.3 創建文件夾 34
3.4.4 遞歸顯示文件 34
3.4.5 文件上傳 35
3.4.6 文件下載 35
3.5 小結 36
第4章 基於Hadoop 3的HDFS高可用 37
4.1 Hadoop 3.x的發展 37
4.1.1 Hadoop 3新特性 37
4.1.2 Hadoop 3 HDFS集群架構 38
4.2 Hadoop 3 HDFS完全分布式搭建 39
4.2.1 安裝JDK 40
4.2.2 配置JDK環境變量 40
4.2.3 配置免密碼登錄 40
4.2.4 配置IP和主機名字映射關係 41
4.2.5 SSH免密碼登錄設置 41
4.2.6 配置Hadoop 3.1.0 42
4.3 什麼是HDFS高可用 47
4.3.1 HDFS高可用實現原理 47
4.3.2 HDFS高可用實現 48
4.4 搭建HDFS高可用 50
4.4.1 配置ZooKeeper 50
4.4.2 配置Hadoop配置文件 52
4.4.3 將配置文件復製到其他節點上 54
4.4.4 啓動JN節點 54
4.4.5 格式化 55
4.4.6 復製元數據到node2節點上 55
4.4.7 格式化ZKFC 55
4.4.8 啓動集群 56
4.4.9 通過瀏覽器查看集群狀態 56
4.4.10 高可用測試 57
4.5 小結 58
第2篇 Hadoop核心技術
第5章 Hadoop的分布式協調服務——ZooKeeper 60
5.1 ZooKeeper的核心概念 60
5.1.1 Session會話機製 60
5.1.2 數據節點、版本與Watcher的關聯 61
5.1.3 ACL策略 61
5.2 ZooKeeper的安裝與運行 61
5.3 ZooKeeper服務器端的常用命令 63
5.4 客戶端連接ZooKeeper的相關操作 64
5.4.1 查看ZooKeeper常用命令 64
5.4.2 connect命令與ls命令 65
5.4.3 create命令——創建節點 65
5.4.4 get命令——獲取數據與信息 66
5.4.5 set命令——修改節點內容 66
5.4.6 delete命令——刪除節點 67
5.5 使用Java API訪問ZooKeeper 67
5.5.1 環境準備與創建會話實例 68
5.5.2 節點創建實例 69
5.5.3 Java API訪問ZooKeeper實例 70
5.6 小結 73
第6章 分布式離綫計算框架——MapReduce 74
6.1 MapReduce概述 74
6.1.1 MapReduce的特點 74
6.1.2 MapReduce的應用場景 75
6.2 MapReduce執行過程 76
6.2.1 單詞統計實例 76
6.2.2 MapReduce執行過程 77
6.2.3 MapReduce的文件切片Split 77
6.2.4 Map過程和Reduce過程 78
6.2.5 Shuffle過程 78
6.3 MapReduce實例 79
6.3.1 WordCount本地測試實例 79
6.3.2 ETL本地測試實例 84
6.4 溫度排序實例 86
6.4.1 時間和溫度的封裝類MyKey.Java 87
6.4.2 Map任務MyMapper.java 88
6.4.3 數據分組類MyGroup.Java 89
6.4.4 溫度排序類MySort.java 89
6.4.5 數據分區MyPartitioner.java 90
6.4.6 Reducer任務MyReducer.java 90
6.4.7 主函數RunJob.java 91
6.5 小結 94
第7章 Hadoop的集群資源管理係統——YARN 95
7.1 為什麼要使用YARN 95
7.2 YARN的基本架構 96
7.2.1 ResourceManager進程 96
7.2.2 ApplicationMaster和NodeManager 97
7.3 YARN工作流程 97
7.4 YARN搭建 98
7.5 小結 100
第8章 Hadoop的數據倉庫框架——Hive 101
8.1 Hive的理論基礎 101
8.1.1 什麼是Hive 101
8.1.2 Hive和數據庫的異同 102
8.1.3 Hive設計的目的與應用 104
8.1.4 Hive的運行架構 104
8.1.5 Hive的執行流程 105
8.1.6 Hive服務 106
8.1.7 元數據存儲Metastore 106
8.1.8 Embedded模式 107
8.1.9 Local模式 108
8.1.10 Remote模式 109
8.2 Hive的配置與安裝 109
8.2.1 安裝MySQL 110
8.2.2 配置Hive 112
8.3 Hive錶的操作 113
8.3.1 創建Hive錶 114
8.3.2 導入數據 114
8.4 錶的分區與分桶 115
8.4.1 錶的分區 115
8.4.2 錶的分桶 117
8.5 內部錶與外部錶 118
8.5.1 內部錶 119
8.5.2 外部錶 119
8.6 內置函數與自定義函數 121
8.6.1 內置函數實例 121
8.6.2 自定義UDAF函數實例 123
8.7 通過Java訪問Hive 124
8.8 Hive優化 125
8.8.1 MapReduce優化 126
8.8.2 配置優化 126
8.9 小結 127
第9章 大數據快速讀寫——HBase 128
9.1 關於NoSQL 128
9.1.1 什麼是NoSQL 128
9.1.2 NoSQL數據庫的分類 129
9.1.3 NoSQL數據庫的應用 129
9.1.4 關係型數據庫與非關係型數據庫的區彆 130
9.2 HBase基礎 130
9.2.1 HBase簡介 130
9.2.2 HBase數據模型 131
9.2.3 HBase體係架構及組件 132
9.2.4 HBase執行原理 134
9.3 HBase安裝 135
9.4 HBase的Shell操作 138
9.5 Java API訪問HBase實例 139
9.5.1 創建錶 139
9.5.2 插入數據 140
9.5.3 查詢數據 141
9.6 小結 142
第10章 海量日誌采集工具——Flume 143
10.1 什麼是Flume 143
10.2 Flume的特點 143
10.3 Flume架構 144
10.4 Flume的主要組件 144
10.4.1 Event、Client與Agent——數據傳輸 145
10.4.2 Source—Event接收 145
10.4.3 Channel—Event傳輸 146
10.4.4 Sink—Event發送 147
10.4.5 其他組件 148
10.5 Flume安裝 148
10.6 Flume應用典型實例 149
10.6.1 本地數據讀取(conf1) 149
10.6.2 收集至HDFS 150
10.6.3 基於日期分區的數據收集 152
10.7 通過exec命令實現數據收集 153
10.7.1 安裝工具 153
10.7.2 編輯配置文件conf4 155
10.7.3 運行Flume 156
10.7.4 查看生成的文件 156
10.7.5 查看HDFS中的數據 157
10.8 小結 158
第11章 Hadoop和關係型數據庫間的數據傳輸工具——Sqoop 159
11.1 什麼是Sqoop 159
11.2 Sqoop工作機製 159
11.3 Sqoop的安裝與配置 161
11.3.1 下載Sqoop 161
11.3.2 Sqoop配置 162
11.4 Sqoop數據導入實例 163
11.4.1 嚮HDFS中導入數據 165
11.4.2 將數據導入Hive 167
11.4.3 嚮HDFS中導入查詢結果 170
11.5 Sqoop數據導齣實例 172
11.6 小結 173
第12章 分布式消息隊列——Kafka 174
12.1 什麼是Kafka 174
12.2 Kafka的架構和主要組件 174
12.2.1 消息記錄的類彆名——Topic 175
12.2.2 Producer與Consumer——數據的生産和消費 176
12.2.3 其他組件——Broker、Partition、Offset、Segment 177
12.3 Kafka的下載與集群安裝 177
12.3.1 安裝包的下載與解壓 177
12.3.2 Kafka的安裝配置 178
12.4 Kafka應用實例 181
12.4.1 Producer實例 181
12.4.2 Consumer實例 182
12.5 小結 184
第13章 開源的內存數據庫——Redis 185
13.1 Redis簡介 185
13.1.1 什麼是Redis 185
13.1.2 Redis的特點 186
13.2 Redis安裝與配置 186
13.3 客戶端登錄 187
13.3.1 密碼為空登錄 187
13.3.2 設置密碼登錄 188
13.4 Redis的數據類型 188
13.4.1 String類型 188
13.4.2 List類型 190
13.4.3 Hash類型 191
13.4.4 Set類型 194
13.5 小結 197
第14章 Ambari和CDH 198
14.1 Ambari的安裝與集群管理 198
14.1.1 認識HDP與Ambari 198
14.1.2 Ambari的搭建 199
14.1.3 配置網卡與修改本機名 199
14.1.4 定義DNS服務器與修改hosts主機映射關係 200
14.1.5 關閉防火牆並安裝JDK 200
14.1.6 升級OpenSSL安全套接層協議版本 201
14.1.7 關閉SELinux的強製訪問控製 201
14.1.8 SSH免密碼登錄 202
14.1.9 同步NTP 202
14.1.10 關閉Linux的THP服務 204
14.1.11 配置UMASK與HTTP服務 204
14.1.12 安裝本地源製作相關工具與Createrepo 205
14.1.13 禁止離綫更新與製作本地源 205
14.1.14 安裝Ambari-server與MySQL 208
14.1.15 安裝Ambari 210
14.1.16 安裝Agent與Ambari登錄安裝 211
14.1.17 安裝部署問題解決方案 214
14.2 CDH的安裝與集群管理 216
14.2.1 什麼是CDH和Cloudera Manager介紹 216
14.2.2 Cloudera Manager與Ambari對比的優勢 216
14.2.3 CDH安裝和網卡配置 217
14.2.4 修改本機名與定義DNS服務器 217
14.2.5 修改hosts主機映射關係 218
14.2.6 關閉防火牆 218
14.2.7 安裝JDK 219
14.2.8 升級OpenSSL安全套接層協議版本 219
14.2.9 禁用SELinux的強製訪問功能 220
14.2.10 SSH 免密碼登錄 220
14.2.11 同步NTP安裝 220
14.2.12 安裝MySQL 222
14.2.13 安裝Cloudera Manager 222
14.2.14 添加MySQL驅動包和修改Agent配置 223
14.2.15 初始化CM5數據庫和創建cloudera-scm用戶 223
14.2.16 準備Parcels 223
14.2.17 CDH的安裝配置 224
14.3 小結 227
第15章 快速且通用的集群計算係統——Spark 228
15.1 Spark基礎知識 228
15.1.1 Spark的特點 228
15.1.2 Spark和Hadoop的比較 229
15.2 彈性分布式數據集RDD 230
15.2.1 RDD的概念 230
15.2.2 RDD的創建方式 230
15.2.3 RDD的操作 230
15.2.4 RDD的執行過程 231
15.3 Spark作業運行機製 232
15.4 運行在YARN上的Spark 233
15.4.1 在YARN上運行Spark 233
15.4.2 Spark在YARN上的兩種部署模式 233
15.5 Spark集群安裝 234
15.5.1 Spark安裝包的下載 234
15.5.2 Spark安裝環境 236
15.5.3 Scala安裝和配置 236
15.5.4 Spark分布式集群配置 238
15.6 Spark實例詳解 241
15.6.1 網站用戶瀏覽次數最多的URL統計 241
15.6.2 用戶地域定位實例 243
15.7 小結 246
第3篇 Hadoop項目案例實戰
第16章 基於電商産品的大數據業務分析係統實戰 248
16.1 項目背景、實現目標和項目需求 248
16.2 功能與流程 249
16.2.1 用戶信息 250
16.2.2 商品信息 251
16.2.3 購買記錄 251
16.3 數據收集 252
16.3.1 Flume的配置文件 252
16.3.2 啓動Flume 253
16.3.3 查看采集後的文件 253
16.3.4 通過後颱命令查看文件 254
16.3.5 查看文件內容 255
16.3.6 上傳user.list文件 256
16.3.7 上傳brand.list目錄 256
16.4 數據預處理 257
16.5 數據分析——創建外部錶 261
16.6 建立模型 264
16.6.1 各年齡段用戶消費總額 264
16.6.2 查詢各品牌銷售總額 265
16.6.3 查詢各省份消費總額 266
16.6.4 使用Sqoop將數據導入MySQL數據庫 266
16.7 數據可視化 268
16.8 小結 272
第17章 用戶畫像分析實戰 273
17.1 項目背景 273
17.2 項目目標與項目開發過程 274
17.2.1 數據采集 274
17.2.2 數據預處理 275
17.2.3 模型構建 275
17.2.4 數據分析 276
17.3 核心代碼解讀 277
17.3.1 項目流程介紹 277
17.3.2 核心類的解讀 278
17.3.3 core-site.xml配置文件 279
17.3.4 hdfs-site.xml配置文件 279
17.3.5 UserProfile.properties配置文件 280
17.3.6 LoadConfig.java:讀取配置信息 280
17.3.7 ReadFile.java:讀取文件 281
17.3.8 ReadFromHdfs.java:提取信息 281
17.3.9 UserProfile.java:創建用戶畫像 282
17.3.10 TextArrayWritable.java:字符串處理工具類 285
17.3.11 MapReduce任務1:UserProfileMapReduce.java 285
17.3.12 MapReduce任務2:UserProfileMapReduce2.java 289
17.3.13 UserProfilePutInHbaseMap.java:提取用戶畫像 291
17.3.14 UserProfilePutInHbaseReduce:存儲用戶畫像 292
17.4 項目部署 293
17.5 小結 294
第18章 基於個性化的視頻推薦係統實戰 295
18.1 項目背景 295
18.2 項目目標與推薦係統簡介 295
18.2.1 推薦係統的分類 295
18.2.2 推薦模型的構建流程 296
18.2.3 推薦係統核心算法 297
18.2.4 如何基於Mahout框架完成商品推薦 300
18.2.5 基於Mahout框架的商品推薦實例 300
18.3 推薦係統項目架構 302
18.4 推薦係統模型構建 303
18.5 核心代碼 304
18.5.1 公共部分 305
18.5.2 離綫部分 307
18.5.3 在綫部分 311
18.6 小結 314
第19章 電信離網用戶挽留實戰 315
19.1 商業理解 315
19.2 數據理解 316
19.2.1 收集數據 316
19.2.2 瞭解數據 317
19.2.3 保證數據質量 318
19.3 數據整理 318
19.3.1 數據整閤 318
19.3.2 數據過濾 319
19.4 數據清洗 319
19.4.1 噪聲識彆 320
19.4.2 離群值和極端值的定義 321
19.4.3 離群值處理方法 321
19.4.4 數據空值處理示例 323
19.5 數據轉換 324
19.5.1 變量轉換 324
19.5.2 壓縮分類水平數 324
19.5.3 連續數據離散化 325
19.5.4 變換啞變量 326
19.5.5 數據標準化 326
19.5.6 數據壓縮 326
19.6 建模 327
19.6.1 決策樹算法概述 327
19.6.2 決策樹的訓練步驟 327
19.6.3 訓練決策樹 328
19.6.4 C4.5算法 329
19.6.5 決策樹剪枝 332
19.7 評估 335
19.7.1 混淆矩陣 335
19.7.2 ROC麯綫 336
19.8 部署 338
19.9 用戶離網案例代碼詳解 339
19.9.1 數據準備 339
19.9.2 相關性分析 341
19.9.3 最終建模 342
19.9.4 模型評估 343
19.10 小結 346
· · · · · · (
收起)