(1)概念篇:介紹當前緊密關聯的*IT領域技術云計算、大數據和物聯網。
(2)大數據存儲與管理篇:介紹分布式數據存儲的概念、原理和技術,包括HDFS、HBase、NoSQL數據庫、云數據庫。
(3)大數據處理與分析篇:介紹MapReduce分布式編程框架、基于內存的分布式計算框架Spark、圖計算、流計算、數據可視化。
(4)大數據應用篇:介紹基于大數據技術的推薦系統。
1.作者建設了國內高校首個大數據課程教師培訓交流基地,打造了中國高校大數據教學知名品牌,已經在國內高校形成了廣泛的影響力。
2.作者建設了國內高校首個大數據課程公共服務平臺,為教師教學和學生學習大數據課程提供講義PPT、學習指南、備課指南、上機習題、實驗指南、技術資料、授課視頻等,資源豐富。
序言
本書作者林子雨老師,為本教材打造了最完備的服務體系中國高校大數據課程公共服務平臺(訪問地址:http://dblab.xmu.edu.cn/post/bigdata-teaching-platform/),是國內第一個服務于高校大數據課程建設的公共服務平臺,旨在促進高校大數據課程建設,提高大數據課程教學水平,提升學生學習大數據課程效果。平臺服務對象涵蓋高校、教師和學生。平臺為高校開設大數據課程提供全流程輔助,為教師開展教學工作提供一站式服務,為學生學習大數據課程提供全方位輔導。平臺重點打造9個1工程,即1本教材(含官網)、1個教師服務站、1個學生服務站、1個公益項目、1堂巡講公開課、1個示范班級、1門在線課程、1個交流群(QQ群、微信群)和1個保障團隊。
1本教材:即林子雨老師編著的國內高校第一本系統性介紹大數據知識專業教材《大數據技術原理與應用》;
1個教師服務站:為教師開展大數據教學提供包括備課指南、課程教材、講義PPT、課程習題、經驗交流、技術資料等在內的全方位、一站式服務;
1個學生服務站:為學生學習大數據課程提供包括課程教材、自學教程、講義PPT、技術資料、學習博客、進階指南等在內的全方位、一站式服務;
1個公益項目:輔助尚未開設大數據課程的國內高校開設課程,并提供全流程指導,幫助參與項目的教師,在短期內順利實現大數據課程的開設和講解。
1堂巡講公開課:開展大數據公開課全國高校巡講計劃,精品課程,上門授課。全程嚴格執行精品大數據公開課六大質量標準,即:精品教材、精心備課、精彩講解、優雅形象、標準音質、完整服務。
1個示范班級:以示范班級樹立大數據教學實踐標桿;
1門在線課程:開辟大數據課程網絡講授平臺;
1個交流群:促進大數據課程教師之間的溝通和交流;
1個保障團隊:即廈門大學數據庫實驗室,為平臺建設發展提供強有力的保障。
第一篇 大數據基礎
第1章 大數據概述 2
1.1 大數據時代 2
1.1.1 第三次信息化浪潮 2
1.1.2 信息科技為大數據時代提供
技術支撐 3
1.1.3 數據產生方式的變革促成大數據時代的來臨 5
1.1.4 大數據的發展歷程 6
1.2 大數據的概念 7
1.2.1 數據量大 7
1.2.2 數據類型繁多 8
1.2.3 處理速度快 9
1.2.4 價值密度低 9
1.3 大數據的影響 9
1.3.1 大數據對科學研究的影響 10
1.3.2 大數據對思維方式的影響 11
1.3.3 大數據對社會發展的影響 11
1.3.4 大數據對就業市場的影響 12
1.3.5 大數據對人才培養的影響 13
1.4 大數據的應用 14
1.5 大數據關鍵技術 14
1.6 大數據計算模式 15
1.6.1 批處理計算 16
1.6.2 流計算 16
1.6.3 圖計算 16
1.6.4 查詢分析計算 17
1.7 大數據產業 17
1.8 大數據與云計算、物聯網 18
1.8.1 云計算 18
1.8.2 物聯網 21
1.8.3 大數據與云計算、物聯網的關系 25
1.9 本章小結 26
1.10 習題 26
第2章 大數據處理架構Hadoop 28
2.1 概述 28
2.1.1 Hadoop簡介 28
2.1.2 Hadoop的發展簡史 28
2.1.3 Hadoop的特性 29
2.1.4 Hadoop的應用現狀 29
2.1.5 Hadoop的版本 30
2.2 Hadoop生態系統 30
2.2.1 HDFS 31
2.2.2 HBase 31
2.2.3 MapReduce 31
2.2.4 Hive 32
2.2.5 Pig 32
2.2.6 Mahout 32
2.2.7 Zookeeper 32
2.2.8 Flume 32
2.2.9 Sqoop 32
2.2.10 Ambari 33
2.3 Hadoop的安裝與使用 33
2.3.1 創建Hadoop用戶 33
2.3.2 Java的安裝 34
2.3.3 SSH登錄權限設置 34
2.3.4 安裝單機Hadoop 34
2.3.5 Hadoop偽分布式安裝 35
2.4 本章小結 37
2.5 習題 38
實驗1 安裝Hadoop 38
第二篇 大數據存儲與管理
第3章 分布式文件系統HDFS 42
3.1 分布式文件系統 42
3.1.1 計算機集群結構 42
3.1.2 分布式文件系統的結構 43
3.1.3 分布式文件系統的設計需求 44
3.2 HDFS簡介 44
3.3 HDFS的相關概念 45
3.3.1 塊 45
3.3.2 名稱節點和數據節點 46
3.3.3 第二名稱節點 47
3.4 HDFS體系結構 48
3.4.1 概述 48
3.4.2 HDFS命名空間管理 49
3.4.3 通信協議 49
3.4.4 客戶端 50
3.4.5 HDFS體系結構的局限性 50
3.5 HDFS的存儲原理 50
3.5.1 數據的冗余存儲 50
3.5.2 數據存取策略 51
3.5.3 數據錯誤與恢復 52
3.6 HDFS的數據讀寫過程 53
3.6.1 讀數據的過程 53
3.6.2 寫數據的過程 54
3.7 HDFS編程實踐 55
3.7.1 HDFS常用命令 55
3.7.2 HDFS的Web界面 56
3.7.3 HDFS常用Java API及應用實例 57
3.8 本章小結 60
3.9 習題 61
實驗2 熟悉常用的HDFS操作 61
第4章 分布式數據庫HBase 63
4.1 概述 63
4.1.1 從BigTable說起 63
4.1.2 HBase簡介 63
4.1.3 HBase與傳統關系數據庫的
對比分析 64
4.2 HBase訪問接口 65
4.3 HBase數據模型 66
4.3.1 數據模型概述 66
4.3.2 數據模型的相關概念 66
4.3.3 數據坐標 67
4.3.4 概念視圖 68
4.3.5 物理視圖 69
4.3.6 面向列的存儲 69
4.4 HBase的實現原理 71
4.4.1 HBase的功能組件 71
4.4.2 表和Region 71
4.4.3 Region的定位 72
4.5 HBase運行機制 74
4.5.1 HBase系統架構 74
4.5.2 Region服務器的工作原理 76
4.5.3 Store的工作原理 77
4.5.4 HLog的工作原理 77
4.6 HBase編程實踐 78
4.6.1 HBase常用的Shell命令 78
4.6.2 HBase常用的Java API及
應用實例 80
4.7 本章小結 90
4.8 習題 90
實驗3 熟悉常用的HBase操作 91
第5章 NoSQL數據庫 94
5.1 NoSQL簡介 94
5.2 NoSQL興起的原因 95
5.2.1 關系數據庫無法滿足
Web 2.0的需求 95
5.2.2 關系數據庫的關鍵特性在Web 2.0時代成為雞肋 96
5.3 NoSQL與關系數據庫的比較 97
5.4 NoSQL的四大類型 98
5.4.1 鍵值數據庫 99
5.4.2 列族數據庫 100
5.4.3 文檔數據庫 100
5.4.4 圖數據庫 101
5.5 NoSQL的三大基石 101
5.5.1 CAP 101
5.5.2 BASE 103
5.5.3 最終一致性 104
5.6 從NoSQL到NewSQL數據庫 105
5.7 本章小結 107
5.8 習題 107
第6章 云數據庫 108
6.1 云數據庫概述 108
6.1.1 云計算是云數據庫興起的基礎 108
6.1.2 云數據庫的概念 109
6.1.3 云數據庫的特性 110
6.1.4 云數據庫是個性化數據
存儲需求的理想選擇 111
6.1.5 云數據庫與其他數據庫的關系 112
6.2 云數據庫產品 113
6.2.1 云數據庫廠商概述 113
6.2.2 Amazon的云數據庫產品 113
6.2.3 Google的云數據庫產品 114
6.2.4 微軟的云數據庫產品 114
6.2.5 其他云數據庫產品 115
6.3 云數據庫系統架構 115
6.3.1 UMP系統概述 115
6.3.2 UMP系統架構 116
6.3.3 UMP系統功能 118
6.4 云數據庫實踐 121
6.4.1 阿里云RDS簡介 121
6.4.2 RDS中的概念 121
6.4.3 購買和使用RDS數據庫 122
6.4.4 將本地數據庫遷移到云端RDS
數據庫 126
6.5 本章小結 127
6.6 習題 127
實驗4 熟練使用RDS for MySQL
數據庫 128
第三篇 大數據處理與分析
第7章 MapReduce 132
7.1 概述 132
7.1.1 分布式并行編程 132
7.1.2 MapReduce模型簡介 133
7.1.3 Map和Reduce函數 133
7.2 MapReduce的工作流程 134
7.2.1 工作流程概述 134
7.2.2 MapReduce的各個執行階段 135
7.2.3 Shuffle過程詳解 136
7.3 實例分析:WordCount 139
7.3.1 WordCount的程序任務 139
7.3.2 WordCount的設計思路 139
7.3.3 WordCount的具體執行過程 140
7.3.4 一個WordCount執行過程的
實例 141
7.4 MapReduce的具體應用 142
7.4.1 MapReduce在關系代數運算中的應用 142
7.4.2 分組與聚合運算 144
7.4.3 矩陣-向量乘法 144
7.4.4 矩陣乘法 144
7.5 MapReduce編程實踐 145
7.5.1 任務要求 145
7.5.2 編寫Map處理邏輯 146
7.5.3 編寫Reduce處理邏輯 147
7.5.4 編寫main方法 147
7.5.5 編譯打包代碼以及運行程序 148
7.6 本章小結 150
7.7 習題 151
實驗5 MapReduce編程初級實踐 152
第8章 Hadoop再探討 155
8.1 Hadoop的優化與發展 155
8.1.1 Hadoop的局限與不足 155
8.1.2 針對Hadoop的改進與提升 156
8.2 HDFS2.0的新特性 156
8.2.1 HDFS HA 157
8.2.2 HDFS聯邦 158
8.3 新一代資源管理調度框架YARN 159
8.3.1 MapReduce1.0的缺陷 159
8.3.2 YARN設計思路 160
8.3.3 YARN體系結構 161
8.3.4 YARN工作流程 163
8.3.5 YARN框架與MapReduce1.0
框架的對比分析 164
8.3.6 YARN的發展目標 165
8.4 Hadoop生態系統中具有代表性的
功能組件 166
8.4.1 Pig 166
8.4.2 Tez 167
8.4.3 Kafka 169
8.5 本章小結 170
8.6 習題 170
第9章 Spark 172
9.1 概述 172
9.1.1 Spark簡介 172
9.1.2 Scala簡介 173
9.1.3 Spark與Hadoop的對比 174
9.2 Spark生態系統 175
9.3 Spark運行架構 177
9.3.1 基本概念 177
9.3.2 架構設計 177
9.3.3 Spark運行基本流程 178
9.3.4 RDD的設計與運行原理 179
9.4 Spark的部署和應用方式 184
9.4.1 Spark三種部署方式 184
9.4.2 從Hadoop Storm架構轉向
Spark架構 185
9.4.3 Hadoop和Spark的統一部署 186
9.5 Spark編程實踐 186
9.5.1 啟動Spark Shell 187
9.5.2 Spark RDD基本操作 187
9.5.3 Spark應用程序 189
9.6 本章小結 192
9.7 習題 193
第10章 流計算 194
10.1 流計算概述 194
10.1.1 靜態數據和流數據 194
10.1.2 批量計算和實時計算 195
10.1.3 流計算的概念 196
10.1.4 流計算與Hadoop 196
10.1.5 流計算框架 197
10.2 流計算的處理流程 197
10.2.1 概述 197
10.2.2 數據實時采集 198
10.2.3 數據實時計算 198
10.2.4 實時查詢服務 199
10.3 流計算的應用 199
10.3.1 應用場景1:實時分析 199
10.3.2 應用場景2:實時交通 200
10.4 開源流計算框架Storm 200
10.4.1 Storm簡介 201
10.4.2 Storm的特點 201
10.4.3 Storm的設計思想 202
10.4.4 Storm的框架設計 203
10.4.5 Storm實例 204
10.5 Spark Streaming 206
10.5.1 Spark Streaming設計 206
10.5.2 Spark Streaming與Storm的
對比 207
10.6 本章小結 208
10.7 習題 208
第11章 圖計算 210
11.1 圖計算簡介 210
11.1.1 傳統圖計算解決方案的
不足之處 210
11.1.2 圖計算通用軟件 211
11.2 Pregel簡介 211
11.3 Pregel圖計算模型 212
11.3.1 有向圖和頂點 212
11.3.2 頂點之間的消息傳遞 212
11.3.3 Pregel的計算過程 213
11.3.4 實例 214
11.4 Pregel的C API 216
11.4.1 消息傳遞機制 217
11.4.2 Combiner 217
11.4.3 Aggregator 218
11.4.4 拓撲改變 218
11.4.5 輸入和輸出 218
11.5 Pregel的體系結構 219
11.5.1 Pregel的執行過程 219
11.5.2 容錯性 220
11.5.3 Worker 221
11.5.4 Master 221
11.5.5 Aggregator 222
11.6 Pregel的應用實例 222
11.6.1 單源最短路徑 222
11.6.2 二分匹配 223
11.7 Pregel和MapReduce實現PageRank算法的對比 224
11.7.1 PageRank算法 224
11.7.2 PageRank算法在Pregel中的
實現 225
11.7.3 PageRank算法在MapReduce
中的實現 225
11.7.4 PageRank算法在Pregel
和MapReduce中實現的比較 228
11.8 本章小結 228
11.9 習題 228
第12章 數據可視化 230
12.1 可視化概述 230
12.1.1 什么是數據可視化 230
12.1.2 可視化的發展歷程 230
12.1.3 可視化的重要作用 231
12.2 可視化工具 233
12.2.1 入門級工具 233
12.2.2 信息圖表工具 234
12.2.3 地圖工具 235
12.2.4 時間線工具 236
12.2.5 高級分析工具 236
12.3 可視化典型案例 237
12.3.1 全球黑客活動 237
12.3.2 互聯網地圖 237
12.3.3 編程語言之間的影響力關系圖 238
12.3.4 百度遷徙 239
12.3.5 世界國家健康與財富之間的
關系 239
12.3.6 3D可視化互聯網地圖APP 239
12.4 本章小結 240
12.5 習題 240
第四篇 大數據應用
第13章 大數據在互聯網領域的
應用 242
13.1 推薦系統概述 242
13.1.1 什么是推薦系統 242
13.1.2 長尾理論 243
13.1.3 推薦方法 243
13.1.4 推薦系統模型 244
13.1.5 推薦系統的應用 244
13.2 協同過濾 245
13.2.1 基于用戶的協同過濾 245
13.2.2 基于物品的協同過濾 246
13.2.3 UserCF算法和ItemCF算法的
對比 248
13.3 協同過濾實踐 248
13.3.1 實踐背景 248
13.3.2 數據處理 249
13.3.3 計算相似度矩陣 249
13.3.4 計算推薦結果 250
13.3.5 展示推薦結果 250
13.4 本章小結 251
13.5 習題 251
第14章 大數據在生物醫學
領域的應用 252
14.1 流行病預測 252
14.1.1 傳統流行病預測機制的不足 252
14.1.2 基于大數據的流行病預測 253
14.1.3 基于大數據的流行病預測的
重要作用 253
14.1.4 案例:百度疾病預測 254
14.2 智慧醫療 255
14.3 生物信息學 256
14.4 案例:基于大數據的綜合健康服務
平臺 257
14.4.1 平臺概述 257
14.4.2 平臺業務架構 258
14.4.3 平臺技術架構 258
14.4.4 平臺關鍵技術 259
14.5 本章小結 260
14.6 習題 261
第15章 大數據的其他應用 262
15.1 大數據在物流領域中的應用 262
15.1.1 智能物流的概念 262
15.1.2 智能物流的作用 263
15.1.3 智能物流的應用 263
15.1.4 大數據是智能物流的關鍵 263
15.1.5 中國智能物流骨干網菜鳥 264
15.2 大數據在城市管理中的應用 266
15.2.1 智能交通 266
15.2.2 環保監測 267
15.2.3 城市規劃 268
15.2.4 安防領域 269
15.3 大數據在金融行業中的應用 269
15.3.1 高頻交易 269
15.3.2 市場情緒分析 269
15.3.3 信貸風險分析 270
15.4 大數據在汽車行業中的應用 271
15.5 大數據在零售行業中的應用 272
15.5.1 發現關聯購買行為 272
15.5.2 客戶群體細分 273
15.5.3 供應鏈管理 273
15.6 大數據在餐飲行業中的應用 274
15.6.1 餐飲行業擁抱大數據 274
15.6.2 餐飲O2O 274
15.7 大數據在電信行業中的應用 276
15.8 大數據在能源行業中的應用 276
15.9 大數據在體育和娛樂領域中的
應用 277
15.9.1 訓練球隊 277
15.9.2 投拍影視作品 278
15.9.3 預測比賽結果 279
15.10 大數據在安全領域中的應用 280
15.10.1 大數據與國家安全 280
15.10.2 應用大數據技術防御
網絡攻擊 280
15.10.3 警察應用大數據工具
預防犯罪 281
15.11 大數據在政府領域中的應用 282
15.12 大數據在日常生活中的應用 283
15.13 本章小結 284
15.14 習題 284
參考文獻 285