大數據 Hadoop 3.X 分佈式處理實戰
內容描述
本書以實戰開發為原則,以Hadoop 3.X生態系統內的主要大數據工具整合應用及項目開發為主線,
通過Hadoop大數據開發中常見的11個典型模塊和3個完整項目案例,
詳細介紹HDFS、MapReduce、HBase、Hive、Sqoop、Spark等主流大數據工具的整合使用。
本書附帶資源包括本書核心內容的教學視頻,本書所涉及的源代碼、參考資料等。
全書共14章,分為3篇,涵蓋的主要內容有Hadoop及其生態組件偽分佈式安裝和完全分佈式安裝、
分佈式文件系統HDFS、分佈式計算框架MapReduce、NoSQL數據庫HBase、分佈式數據倉庫Hive、
數據轉換工具Sqoop、內存計算框架Spark、海量Web日誌分析系統、電商商品推薦系統、
分佈式垃圾消息識別系統等。
本書內容豐富、案例典型、實用性強,適合各個層次希望學習大數據開發技術的人員閱讀,
尤其適合有一定Java 基礎而要進行Hadoop應用開發的人員閱讀。
目錄大綱
目錄:
第一篇Hadoop技術1
第1章大數據與Hadoop概述03
1.1 大數據概述03
1.1.1 大數據的定義03
1.1.2 大數據行業的發展04
1.1.3 大數據的典型應用04
1.2 Hadoop概述06
1.2.1 Hadoop簡介06
1.2.2 Hadoop生態子項目07
1.2.3 Hadoop 3.X的新特性09
1.3 小結09
1.4 配套視頻10
第2章Hadoop偽分佈式安裝11
2.1 Hadoop偽分佈式安裝前的準備11
2.1.1 安裝VMware 11
2.1.2 安裝CentOS 7 12
2.1.3 配置CentOS 7:接受協議15
2.1.4 配置CentOS 7:登錄系統16
2.1.5 配置CentOS 7:設置IP 16
2.1.6 配置CentOS 7:修改主機名17
2.1.7 配置CentOS 7:配置hosts文件18
2.1.8 配置CentOS 7:關閉防火牆18
2.1.9 配置CentOS 7:禁用selinux 19
2.1.10 配置CentOS 7:設置SSH免密碼登錄19
2.1.11 配置CentOS 7:重啟20
2.2 Hadoop偽分佈式安裝21
2.2.1 安裝WinSCP 21
2.2.2 安裝PieTTY 22
2.2.3 安裝JDK 23
2.2.4 安裝Hadoop 24
2.3 Hadoop驗證28
2.3.1 格式化28
2.3.2 啟動Hadoop 29
2.3.3 查看Hadoop相關進程29
2.3.4 瀏覽文件30
2.3.5 瀏覽器訪問30
2.4 小結31
2.5 配套視頻31
第3章Hadoop分佈式文件系統——HDFS 32
3.1 HDFS原理32
3.1.1 HDFS的假設前提和設計目標32
3.1.2 HDFS的組件33
3.1.3 HDFS數據複製36
3.1.4 HDFS健壯性36
3.1.5 HDFS數據組織38
3.2 HDFS Shell 39
3.2.1 Hadoop文件操作命令39
3.2.2 Hadoop系統管理命令44
3.3 HDFS Java API 46
3.3.1 搭建Linux下Eclipse開發環境46
3.3.2 為Eclipse安裝Hadoop插件47
3.3.3 HDFS Java API示例49
3.4 小結56
3.5 配套視頻56
第4章分佈式計算框架MapReduce 57
4.1 MapReduce原理57
4.1.1 MapReduce概述57
4.1.2 MapReduce的主要功能59
4.1.3 MapReduce的處理流程59
4.2 MapReduce編程基礎61
4.2.1 內置數據類型介紹61
4.2.2 WordCount入門示例63
4.2.3 MapReduce分區與自定義數據類型67
4.3 MapReduce綜合實例——數據去重71
4.3.1 實例描述71
4.3.2 設計思路72
4.3.3 程序代碼73
4.3.4 運行結果74
4.4 MapReduce綜合實例——數據排序75
4.4.1 實例描述75
4.4.2 設計思路76
4.4.3 程序代碼77
4.4.4 運行結果79
4.5 MapReduce綜合實例——求學生平均成績79
4.5.1 實例描述79
4.5.2 設計思路80
4.5.3 程序代碼81
4.5.4 運行結果83
4.6 MapReduce綜合實例——WordCount級示例84
4.7 小結87
4.8 配套視頻87二篇Hadoop 生態系統的主要大數據工具整合應用89
第5章NoSQL數據庫HBase 91
5.1 HBase原理91
5.1.1 HBase概述91
5.1.2 HBase核心概念92
5.1.3 HBase的關鍵流程95
5.2 HBase偽分佈式安裝97
5.2.1 安裝HBase的前提條件98
5.2.2 解壓並配置環境變量98
5.2.3 配置HBase參數99
5.2.4 驗證HBase 100
5.3 HBase Shell 103
5.3.1 HBase Shell常用命令103
5.3.2 HBase Shell綜合示例109
5.3.3 HBase Shell的全部命令112
5.4 小結114
5.5 配套視頻114
第6章HBase級特性115
6.1 HBase Java API 115
6.1.1 HBase Java API介紹115
6.1.2 HBase Java API示例120
6.2 HBase與MapReduce的整合130
6.2.1 HBase與MapReduce的整合概述130
6.2.2 HBase與MapReduce的整合示例130
6.3 小結134
6.4 配套視頻134
第7章分佈式數據倉庫Hive 135
7.1 Hive概述135
7.1.1 Hive的定義135
7.1.2 Hive的設計特徵136
7.1.3 Hive的體系結構136
7.2 Hive偽分佈式安裝137
7.2.1 安裝Hive的前提條件137
7.2.2 解壓並配置環境變量138
7.2.3 安裝MySQL 139
7.2.4 配置Hive 143
7.2.5 驗證Hive 145
7.3 Hive QL的基礎功能146
7.3.1 操作數據庫146
7.3.2 創建表147
7.3.3 數據準備150
7.4 Hive QL的級功能153
7.4.1 select查詢154
7.4.2 函數154
7.4.3 統計函數154
7.4.4 distinct去除重複值155
7.4.5 limit限制返回記錄的條數156
7.4.6 為列名取別名156
7.4.7 case when then多路分支156
7.4.8 like模糊查詢157
7.4.9 group by分組統計157
7.4.10 having過濾分組統計結果157
7.4.11 inner join內聯接158
7.4.12 left outer join和right outer join外聯接159
7.4.13 full outer join外部聯接159
7.4.14 order by排序160
7.4.15 where查找160
7.5 小結161
7.6 配套視頻162
第8章Hive級特性163
8.1 Beeline 163
8.1.1 使用Beeline的前提條件163
8.1.2 Beeline的基本操作164
8.1.3 Beeline的參數選項與管理命令166
8.2 Hive JDBC 167
8.2.1 運行Hive JDBC的前提條件16
8.2.2 Hive JDBC基礎示例167
8.2.3 Hive JDBC綜合示例169
8.3 Hive函數174
8.3.1 內置函數174
8.3.2 自定義函數175
8.4 Hive表的級特性181
8.4.1 外部表181
8.4.2 分區表182
8.5 小結185
8.6 配套視頻185
第9章數據轉換工具Sqoop 186
9.1 Sqoop概述與安裝186
9.1.1 Sqoop概述186
9.1.2 Sqoop安裝187
9.2 Sqoop導入數據189
9.2.1 更改MySQL的root用戶密碼189
9.2.2 準備數據190
9.2.3 導入數據到HDFS 191
9.2.4 查看HDFS數據192
9.2.5 導入數據到Hive 193
9.2.6 查看Hive數據193
9.3 Sqoop導出數據194
9.3.1 準備MySQL表194
9.3.2 導出數據到MySQL 194
9.3.3 查看MySQL中的導出數據195
9.4 深入理解Sqoop的導入與導出196
9.5 小結203
9.6 配套視頻203
第10章內存計算框架Spark 204
10.1 Spark入門204
10.1.1 Spark概述204
10.1.2 Spark偽分佈式安裝205
10.1.3 由Java到Scala 209
10.1.4 Spark的應用212
10.1.5 Spark入門示例217
10.2 Spark Streaming 220
10.2.1 Spark Streaming概述220
10.2.2 Spark Streaming示例221
10.3 Spark SQL 224
10.3.1 Spark SQL概述224
10.3.2 spark-sql命令225
10.3.3 使用Scala操作Spark SQL 227
10.4 小結228
10.5 配套視頻229
第11章Hadoop及其常用組件集群安裝230
11.1 Hadoop集群安裝230
11.1.1 安裝並配置CentOS 230
11.1.2 安裝JDK 236
11.1.3 安裝Hadoop 237
11.1.4 遠程複製文件241
11.1.5 驗證Hadoop 242
11.2 HBase集群安裝244
11.2.1 解壓並配置環境變量244
11.2.2 配置HBase參數245
11.2.3 遠程複製文件246
11.2.4 驗證HBase 247
11.3 Hive集群安裝249
11.3.1 解壓並配置環境變量249
11.3.2 安裝MySQL 250
11.3.3 配置Hive 252
11.3.4 驗證Hive 254
11.4 Spark集群安裝254
11.4.1 安裝Scala 254
11.4.2 安裝Spark 254
11.4.3 配置Spark 255
11.4.4 遠程複製文件256
11.4.5 驗證Spark 257
11.5 小結259
11.6 配套視頻259
第三篇實戰篇261
第12章海量Web日誌分析系統263
12.1 案例介紹263
12.1.1 分析Web日誌數據的目的263
12.1.2 Web日誌分析的典型應用場景265
12.1.3 日誌的不確定性265
12.2 案例分析266
12.2.1 日誌分析的KPI 267
12.2.2 案例係統結構267
12.2.3 日誌分析方法268
12.3 案例實現273
12.3.1 定義日誌相關屬性字段273
12.3.2 數據合法標識(在分析時是否被過濾) 274
12.3.3 解析日誌274
12.3.4 日誌合法性過濾275
12.3.5 頁面訪問量統計的實現276
12.3.6 頁面獨立IP訪問量統計的實現278
12.3.7 用戶單位時間PV的統計實現280
12.3.8 用戶訪問設備信息統計的實現282
12.4 小結283
12.5 配套視頻283
第13章電商商品推薦系統284
13.1 案例介紹284
13.1.1 推薦算法284
13.1.2 案例的意義285
13.1.3 案例需求285
13.2 案例設計286
13.2.1 協同過濾286
13.2.2 基於用戶的協同過濾算法289
13.2.3 基於物品的協同過濾算法292
13.2.4 算法實現設計295
13.2.5 推薦步驟與架構設計298
13.3 案例實現298
13.3.1 實現HDFS文件操作工具299
13.3.2 實現任務步驟1:匯總用戶對所有物品的評分信息302
13.3.3 實現任務步驟2:獲取物品同現矩陣305
13.3.4 實現任務步驟3:合併同現矩陣和評分矩陣307
13.3.5 實現任務步驟4:計算推薦結果310
13.3.6 實現統一的任務調度316
13.4 小結317
13.5 配套視頻317
第14章分佈式垃圾消息識別系統318
14.1 案例介紹318
14.1.1 案例內容318
14.1.2 案例應用的主體結構319
14.1.3 案例運行結果321
14.2 RPC遠程方法調用的設計322
14.2.1 Java EE的核心優勢:RMI 322
14.2.2 RMI的基本原理324
14.2.3 自定義RPC組件分析325
14.3 數據分析設計328
14.3.1 垃圾消息識別算法——樸素貝葉斯算法328
14.3.2 進行分佈式貝葉斯分類學習時的全局計數器330
14.3.3 數據清洗分析結果存儲332
14.4 案例實現333
14.4.1 自定義的RPC組件服務端相關實現333
14.4.2 自定義的RPC組件客戶端相關實現342
14.4.3 業務服務器實現347
14.4.4 業務客戶端實現367
14.5 小結370
作者介紹
吳章勇
現任中軟國際分公司技術總監,曾任阿里巴巴集團架構師,
持有信息系統項目管理師級證書;為培訓公司策劃大數據課程體系,
主持開發過多個大數據項目,有15年以上開發和培訓經驗;
錄製過《Hadoop大數據技術》等經典在線教育視頻課程。
楊強
現任中軟國際項目總監,中軟國際ETC CTO辦公室級技術顧問,
移動增值數據服務項目經理,擁有10年大型軟件項目開發及培訓經驗,
對分佈式及異構系統集成有深入研究。
參與主持多個大型項目並發表多篇重要論文。