第一篇 大數據基礎
第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
· · · · · · (
收起)