前 言 本書內容 本書分為三篇,共有12章。
(1)第一篇 大數據的基本概念和技術 第1章 緒論,描述大數據的時代背景與國家大數據戰略,探討大數據的概念和特性,重點闡述大數據支撐體系,包括數據采集、存儲、分布式計算和應用,并討論大數據人才特點與能力要求。 第2章 Hadoop大數據關鍵技術,詳細介紹大數據系統涉及的主流技術,主要包括數據采集與生成、數據分布式存儲、分布式計算框架、數據分析與挖掘等方面的技術和工具。
(2)第二篇 Hadoop大數據平臺搭建與基本應用 第3章 Linux操作系統與集群搭建,介紹Linux集群的安裝、Java開發包JDK的安裝,以及集群的配置方法。 第4章 HDFS安裝與基本應用,介紹Hadoop HDFS的架構、工作原理,以及Hadoop安裝、配置、啟動和程序的運行。 第5章 MapReduce與YARN,介紹MapReduce的工作原理,描述MapReduceV2(也就是YARN)的架構和執行流程。本章重點介紹如何設計MapReduce程序,給出了在Eclipse中實現Java語言MapReduce程序的具體過程。 第6章 Hive和HBase的安裝與應用,主要介紹Hive和HBase的安裝配置和應用方法,同時也介紹MySQL和ZooKeeper的安裝與應用。 第7章 Sqoop和Kafka,介紹Sqoop和Kafka組件的安裝及其基本應用方法。 第8章 Spark集群安裝與開發環境配置,介紹Spark架構及其工作原理,詳細介紹Spark開發環境的安裝與配置,包括熱門的IntelliJ IDEA集成開發環境的安裝與基本應用。 第9章 Spark應用基礎,介紹Spark程序的運行模式和應用設計方法,通過編寫計算圓周率Pi、基于隨機森林模型的貸款風險預測Scala程序,展示了在集成開發環境IDEA中編寫Spark程序的流程。
(3)第三篇 大數據處理與項目開發 第10章 交互式數據處理,介紹如何利用Hive進行大數據處理和分析。Hive是建立在Hadoop MapReduce基礎上的數據倉庫工具,用戶借助SQL語句,可完成很多處理和分析,因此,對實際工作者有很大幫助。 第11章 協同過濾推薦系統,介紹推薦算法的基本概念和應用,展示基于Spark的機器學庫MLlib實現的協同推薦應用。 第12章 銷售數據分析系統,通過一個完整的銷售數據分析系統設計,展示如何利用Hadoop的各種組件開發實際的大數據應用系統。本章運用到的組件包括HDFS、MySQL、Eclipse、Phoenix、HBase、WebCollector、Sevlet、Tomcat等,所展示的數據和應用均來自真實場景,對讀者有較高參考價值。 本書特點 把原理、架構、運行流程分析與實際應用融合起來介紹,融合性闡述框架優于單純的原理分析,因為原理最終要付諸應用。 本書高度重視實踐能力的培養,對系統安裝、配置和應用過程給出了十分詳細的描述,所有實驗都是基于實際完成的操作介紹的,并配有現場截圖,為讀者展示了真實、詳盡、可重現的場景,十分方便讀者自學和鉆研。 與很多大數據技術書籍不同,本書突出了數據處理本身,深入介紹了如何運用技術進行實際的數據分析,所采用的數據樣本來自生產一線,所展示的項目具有實用的參考價值,讀者掌握這些技術之后,就可以開始進行項目開發了。
本書的讀者群 本書十分適合初學者入門和進階。 本書也可供那些已經學習過Hadoop組件技術,但希望全面、系統地理解并掌握實際應用的讀者參考。
本書對從事大數據項目開發的專業人員也有參考價值,書中所描述的Hadoop組件應用中遇到的各種問題及其解決辦法,十分實用。
本書特別適合自學,讀者完全可以利用本書給出的資源和示例,一步一步地完成各項操作和應用,體驗一種登堂入室的成就感。 致謝 感謝大數據時代,感謝開源社區,感謝Apache基金會,感謝Google,感謝所有關心和熱愛大數據的人們! 作者在創作本書中借鑒了中科普開(北京)科技公司的部分培訓資源,在此謹表示衷心的感謝。特別感謝中南大學鄭瑾副教授,本書的部分內容使用了她編撰的書稿。由衷地感謝王建新教授、李建彬教授、張祖平教授,他們耐心地審閱了本書,提出了中肯的意見和建議。非常感謝電子工業出版社田宏峰編輯,他細心專業的工作方式,給作者留下深刻印象,并為本書的高質量印裝提供了保障。 由于作者水平有限,本書的錯誤和疏漏在所難免,懇請廣大讀者提出寶貴意見和建議。聯系郵箱:djhuang@csu.edu.cn。 作 者 2017年5月于長沙
黃東軍,男,教授,博士,博士生導師。畢業于中南大學計算機應用技術,先工作于中南大學信息科學與工程學院。中國計算機學會高級會員,教育部計算機科學與技術專業教學指導委員會"物聯網工程專業教學研究專家組”成員。
目 錄
第一篇 大數據的基本概念和技術
第1章 緒論 3
1.1 時代背景 3
1.1.1 全球大數據浪潮 3
1.1.2 我國的大數據國家戰略 5
1.2 大數據的概念 7
1.2.1 概念 7
1.2.2 特征 8
1.3 技術支撐體系 9
1.3.1 概覽 9
1.3.2 大數據采集層 9
1.3.3 大數據存儲層 10
1.3.4 大數據分析(處理與服務)層 11
1.3.5 大數據應用層 11
1.3.6 垂直視圖 13
1.4 大數據人才及其能力要求 14
1.4.1 首席數據官 14
1.4.2 數據科學家(數據分析師) 15
1.4.3 大數據開發工程師 16
1.4.4 大數據運維工程師 17
1.5 本章小結 17
第2章 Hadoop大數據關鍵技術 19
2.1 Hadoop生態系統 19
2.1.1 架構的基本理論 19
2.1.2 主要組件及其關系 21
2.2 數據采集 24
2.2.1 結構化數據采集工具 24
2.2.2 日志文件采集工具與技術 25
2.3 大數據存儲技術 29
2.3.1 相關概念 29
2.3.2 分布式文件存儲系統 34
2.3.3 數據庫與數據倉庫 38
2.4 分布式計算框架 43
2.4.1 離線計算框架 43
2.4.2 實時流計算平臺 50
2.5 數據分析平臺與工具 57
2.5.1 面向大數據的數據挖掘與分析工具 57
2.5.2 機器學習 61
2.6 本章小結 66
第二篇 Hadoop大數據平臺搭建與基本應用
第3章 Linux操作系統與集群搭建 69
3.1 Linux操作系統 69
3.1.1 概述 69
3.1.2 特點 70
3.1.3 Linux的組成 72
3.2 Linux安裝與集群搭建 75
3.2.1 安裝VMware Workstation 75
3.2.2 在VMware上安裝Linux(CentOS7) 79
3.3 集群的配置 91
3.3.1 設置主機名 91
3.3.2 網絡設置 93
3.3.3 關閉防火墻 98
3.3.4 安裝JDK 99
3.3.5 免密鑰登錄配置 102
3.4 Linux基本命令 105
3.5 本章小結 112
第4章 HDFS安裝與基本應用 113
4.1 HDFS概述 113
4.1.1 特點 113
4.1.2 主要組件與架構 114
4.2 HDFS架構分析 114
4.2.1 數據塊 114
4.2.2 NameNode 115
4.2.3 DataNode 116
4.2.4 SecondaryNameNode 117
4.2.5 數據備份 117
4.2.6 通信協議 118
4.2.7 可靠性保證 118
4.3 文件操作過程分析 119
4.3.1 讀文件 119
4.3.2 寫文件 120
4.3.3 刪除文件 122
4.4 Hadoop HDFS安裝與配置 122
4.4.1 解壓Hadoop安裝包 122
4.4.2 配置Hadoop環境變量 123
4.4.3 配置Yarn環境變量 124
4.4.4 配置核心組件文件 125
4.4.5 配置文件系統 125
4.4.6 配置yarn-site.xml文件 126
4.4.7 配置MapReduce計算框架文件 128
4.4.8 配置Master的slaves文件 129
4.4.9 復制Master上的Hadoop到Slave節點 129
4.5 Hadoop集群的啟動 130
4.5.1 配置操作系統環境變量 130
4.5.2 創建Hadoop數據目錄 131
4.5.3 格式化文件系統 132
4.5.4 啟動和關閉Hadoop 133
4.5.5 驗證Hadoop是否啟動成功 133
4.6 Hadoop集群的基本應用 136
4.6.1 HDFS基本命令 136
4.6.2 在Hadoop集群中運行程序 139
4.7 本章小結 141
第5章 MapReduce與Yarn 143
5.1 MapReduce程序的概念 143
5.1.1 基本編程模型 143
5.1.2 計算過程分析 144
5.2 深入理解Yarn 147
5.2.1 Yarn的基本架構 147
5.2.2 Yarn的工作流程 151
5.3 在Linux平臺安裝Eclipse 152
5.3.1 Eclipse簡介 153
5.3.2 安裝并啟動Eclipse 154
5.4 開發MapReduce程序的基本方法 155
5.4.1 為Eclipse安裝Hadoop插件 156
5.4.2 WordCount:第一個MapReduce程序 160
5.5 本章小結 175
第6章 Hive和HBase的安裝與應用 177
6.1 在CentOS7下安裝MySQL 177
6.1.1 下載或復制MySQL安裝包 177
6.1.2 執行安裝命令 178
6.1.3 啟動MySQL 179
6.1.4 登錄MySQL 179
6.1.5 使用MySQL 181
6.1.6 問題與解決辦法 182
6.2 Hive安裝與應用 183
6.2.1 下載并解壓Hive安裝包 183
6.2.2 配置Hive 184
6.2.3 啟動并驗證Hive 187
6.2.4 Hive的基本應用 189
6.3 ZooKeeper集群安裝 190
6.3.1 ZooKeeper簡介 190
6.3.2 安裝ZooKeeper 191
6.3.3 配置ZooKeeper 191
6.3.4 啟動和測試 193
6.4 HBase的安裝與應用 195
6.4.1 解壓并安裝HBase 195
6.4.2 配置HBase 196
6.4.3 啟動并驗證HBase 199
6.4.4 HBase的基本應用 200
6.4.5 應用HBase中常見問題及其解決辦法 203
6.5 本章小結 204
第7章 Sqoop和Kafka的安裝與應用 205
7.1 安裝部署Sqoop 205
7.1.1 下載或復制Sqoop安裝包 205
7.1.2 解壓并安裝Sqoop 206
7.1.3 配置Sqoop 206
7.1.4 啟動并驗證Sqoop 208
7.1.5 測試Sqoop與MySQL的連接 209
7.2 安裝部署Kafka集群 211
7.2.1 下載或復制Kafka安裝包 211
7.2.2 解壓縮Kafka安裝包 211
7.2.3 配置Kafka集群 211
7.2.4 Kafka的初步應用 213
7.3 本章小結 218
第8章 Spark集群安裝與開發環境配置 219
8.1 深入理解Spark 219
8.1.1 Spark系統架構 219
8.1.2 關鍵概念 221
8.2 安裝與配置Scala 224
8.2.1 下載Scala安裝包 225
8.2.2 安裝Scala 225
8.2.3 啟動并應用Scala 226
8.3 Spark集群的安裝與配置 226
8.3.1 安裝模式 226
8.3.2 Spark的安裝 227
8.3.3 啟動并驗證Spark 230
8.3.4 幾點說明 234
8.4 開發環境安裝與配置 236
8.4.1 IDEA簡介 236
8.4.2 IDEA的安裝 236
8.4.3 IDEA的配置 238
8.5 本章小結 243
第9章 Spark應用基礎 245
9.1 Spark程序的運行模式 245
9.1.1 Spark on Yarn-cluster 245
9.1.2 Spark on Yarn-client 246
9.2 Spark應用設計 247
9.2.1 分布式估算圓周率 248
9.2.2 基于Spark MLlib的貸款風險預測 265
9.3 本章小結 285
第三篇 數據處理與項目開發術
第10章 交互式數據處理 289
10.1 數據預處理 289
10.1.1 查看數據 289
10.1.2 數據擴展 291
10.1.3 數據過濾 292
10.1.4 數據上傳 293
10.2 創建數據倉庫 294
10.2.1 創建Hive數據倉庫的基本命令 294
10.2.2 創建Hive分區表 296
10.3 數據分析 299
10.3.1 基本統計 299
10.3.2 用戶行為分析 301
10.3.3 實時數據 303
10.4 本章小結 304
第11章 協同過濾推薦系統 305
11.1 推薦算法概述 305
11.1.1 基于人口統計學的推薦 305
11.1.2 基于內容的推薦 306
11.1.3 協同過濾推薦 307
11.2 協同過濾推薦算法分析 308
11.2.1 基于用戶的協同過濾推薦 308
11.2.2 基于物品的協同過濾推薦 310
11.3 Spark MLlib推薦算法應用 312
11.3.1 ALS算法原理 312
11.3.2 ALS的應用設計 315
11.4 本章小結 329
第12章 銷售數據分析系統 331
12.1 數據采集 331
12.1.1 在Windows下安裝JDK 331
12.1.2 在Windows下安裝Eclipse 334
12.1.3 將WebCollector項目導入Eclipse 335
12.1.4 在Windows下安裝MySQL 336
12.1.5 連接JDBC 339
12.1.6 運行爬蟲程序 340
12.2 在HBase集群上準備數據 342
12.2.1 將數據導入到MySQL 342
12.2.2 將MySQL表中的數據導入到HBase表中 344
12.3 安裝Phoenix中間件 347
12.3.1 Phoenix架構 347
12.3.2 解壓安裝Phoenix 348
12.3.3 Phoenix環境配置 349
12.3.4 使用Phoenix 350
12.4 基于Web的前端開發 353
12.4.1 將Web前端項目導入Eclipse 353
12.4.2 安裝Tomcat 355
12.4.3 在Eclipse中配置Tomcat 355
12.4.4 在Web瀏覽器中查看執行結果 359
12.5 本章小結 361