本書將基本概念與實例相結合,由淺入深、循序漸進地對大數(shù)據思維、技術和應用做了全面系統(tǒng)的介紹。全書共12章,分為大數(shù)據基礎篇、大數(shù)據存儲篇、大數(shù)據處理篇、大數(shù)據挖掘篇和大數(shù)據應用篇。
大數(shù)據基礎篇的內容涵蓋了大數(shù)據思維理念、大數(shù)據的產生與作用、大數(shù)據基本概念、大數(shù)據采集工具Flume和Scribe、大數(shù)據爬蟲工具Nutch和Scapy、大數(shù)據預處理工具Kettle、大數(shù)據處理架構Hadoop;大數(shù)據存儲篇的內容包含分布式文件存儲系統(tǒng)HDFS、海量數(shù)據存儲數(shù)據庫系統(tǒng)HBase和海量數(shù)據倉庫系統(tǒng)Hive;大數(shù)據處理篇主要介紹了分布式并發(fā)計算批處理模式MapReduce,基于內存的快速處理模式Spark,以及基于實時數(shù)據流的實時處理模式Spark Streaming;大數(shù)據挖掘篇主要對分類、預測、聚類和關聯(lián)等各類大數(shù)據挖掘算法的原理和使用場景進行了描述,并使用Spark MLlib提供的機器學習算法進行了實例講解;大數(shù)據應用篇分別從大數(shù)據場景應用的橫向和縱向出發(fā),介紹了大數(shù)據在各個功能領域的應用場景和在各個行業(yè)的應用場景。
(1)本書以基本概念與實例相結合的方法,由淺入深、循序漸進地對大數(shù)據思維、技術和應用做了全面系統(tǒng)的介紹。
(2)本書在每一個環(huán)節(jié)都配有與理論學習內容相結合的案例介紹,還有使用Java和Python語言編寫的應用實例,使讀者能夠在大數(shù)據平臺上通過實踐親身體驗大數(shù)據處理和分析的過程,從而加快和加深對大數(shù)據理論和技術的理解。
(3)為了使讀者方便檢驗和復習鞏固學習到的知識,本書每章后面都配有豐富的作業(yè)供學生完成。
武志學,劍橋大學博士,曾任思杰(Citrix)公司主任研究員、成都國騰實業(yè)集團CTO、電子科技大學成都學院云計算科學與技術系第一任系主任。現(xiàn)任洛陽汽車工業(yè)大學副校長兼人工智能學院院長、成都信息工程大學大數(shù)據與安全工程中心主任、成都鼎晟數(shù)智科技有限公司董事長。兼任四川省云計算產業(yè)聯(lián)盟副主任、四川省高性能計算專家委員會副主任委員、成都市軟件行業(yè)協(xié)會專家委員會委員。
云計算開源平臺OpenStack頂層設計者之一,發(fā)表國際會議和期刊論文20多篇 ,獲得相關專利20余項,編寫云計算、大數(shù)據圖書4部,大數(shù)據在線培訓平臺“志學課堂” 發(fā)起人。
第 一部分 大數(shù)據基礎篇
第 1章 大數(shù)據思維 2
1.1 什么是大數(shù)據 2
1.2 從IT時代到大數(shù)據時代 4
1.3 大數(shù)據的產生與作用 5
1.3.1 大數(shù)據的產生 6
1.3.2 大數(shù)據的作用 6
1.4 大數(shù)據時代的新理念 7
1.4.1 對研究范式的新認識:從第三范式到第四范式 7
1.4.2 對數(shù)據重要性的新認識:從數(shù)據資源到數(shù)據資產 8
1.4.3 對方法論的新認識:從基于知識到基于數(shù)據 9
1.4.4 對數(shù)據分析的新認識:從統(tǒng)計學到數(shù)據科學 9
1.4.5 對計算智能的新認識:從復雜算法到簡單算法 10
1.4.6 對管理目標的新認識:從業(yè)務數(shù)據化到數(shù)據業(yè)務化 11
1.4.7 對決策方式的新認識:從目標驅動型到數(shù)據驅動型 12
1.4.8 對產業(yè)競合關系的新認識:從以戰(zhàn)略為中心到以數(shù)據為中心 12
1.4.9 對數(shù)據復雜性的新認識:從不接受到接受數(shù)據的復雜性 13
1.4.10 對數(shù)據處理模式的新認識:從小眾參與到大眾協(xié)同 14
1.5 總結 14
習題 14
第 2章 大數(shù)據技術概述 15
2.1 大數(shù)據處理的基本流程 15
2.1.1 數(shù)據抽取與集成 16
2.1.2 數(shù)據分析 16
2.1.3 數(shù)據解釋 16
2.2 大數(shù)據關鍵技術 17
2.2.1 大數(shù)據采集技術 17
2.2.2 大數(shù)據預處理技術 17
2.2.3 大數(shù)據存儲及管理技術 18
2.2.4 大數(shù)據處理 19
2.2.5 大數(shù)據分析及挖掘技術 19
2.2.6 大數(shù)據展示技術 20
2.3 總結 21
習題 21
第3章 大數(shù)據采集 22
3.1 大數(shù)據采集概述 22
3.1.1 大數(shù)據分類 22
3.1.2 大數(shù)據采集方法分類 23
3.2 系統(tǒng)日志采集方法 24
3.2.1 Flume的基本概念 24
3.2.2 Flume使用方法 25
3.2.3 Flume應用案例 26
3.3 網絡數(shù)據采集方法 27
3.3.1 網絡爬蟲原理 27
3.3.2 網絡爬蟲工作流程 28
3.3.3 網絡爬蟲抓取策略 28
3.3.4 Scrapy網絡爬蟲系統(tǒng) 32
3.3.5 小結 36
3.4 總結 36
習題 36
第4章 大數(shù)據預處理 37
4.1 大數(shù)據預處理概述 37
4.1.1 大數(shù)據預處理整體架構 37
4.1.2 數(shù)據質量問題分類 38
4.1.3 大數(shù)據預處理方法 38
4.2 數(shù)據清洗 39
4.2.1 遺漏數(shù)據處理 40
4.2.2 噪聲數(shù)據處理 40
4.2.3 不一致數(shù)據處理 42
4.3 數(shù)據集成 42
4.4 數(shù)據轉換 42
4.5 數(shù)據消減 44
4.5.1 數(shù)據立方合計 44
4.5.2 維數(shù)消減 44
4.5.3 數(shù)據壓縮 45
4.5.4 數(shù)據塊消減 46
4.6 離散化和概念層次樹 48
4.6.1 數(shù)值概念層次樹 48
4.6.2 類別概念層次樹 49
4.7 ETL工具Kettle 50
4.7.1 ETL工具簡介 51
4.7.2 安裝Kettle 51
4.7.3 Kettle的數(shù)據流處理 52
4.8 總結 55
習題 56
第5章 大數(shù)據處理系統(tǒng) 57
5.1 大數(shù)據技術概述 57
5.1.1 分布式計算 57
5.1.2 服務器集群 57
5.1.3 大數(shù)據的技術基礎 57
5.2 Google大數(shù)據處理系統(tǒng) 58
5.2.1 GFS 58
5.2.2 MapReduce 60
5.2.3 BigTable 60
5.3 Hadoop大數(shù)據處理系統(tǒng) 61
5.3.1 Hadoop系統(tǒng)簡介 61
5.3.2 Hadoop生態(tài)圈 61
5.3.3 Hadoop版本演進 63
5.3.4 Hadoop發(fā)行版本 63
5.4 總結 64
習題 64
第二部分 大數(shù)據存儲篇
第6章 大數(shù)據文件系統(tǒng)HDFS 66
6.1 HDFS簡介 66
6.2 HDFS基本原理 66
6.2.1 文件系統(tǒng)的問題 67
6.2.2 HDFS的基本思想 67
6.2.3 HDFS的設計理念 68
6.2.4 HDFS的局限 69
6.3 HDFS系統(tǒng)實現(xiàn) 69
6.3.1 HDFS整體架構 69
6.3.2 HDFS數(shù)據復制 70
6.4 HDFS數(shù)據訪問機制 71
6.4.1 讀取流程 71
6.4.2 寫入流程 72
6.5 HDFS操作 73
6.5.1 HDFS常用命令 73
6.5.2 HDFS的Web界面 74
6.5.3 HDFS的Java API 76
6.6 總結 78
習題 79
第7章 NOSQL數(shù)據庫HBASE 80
7.1 NoSQL概述 80
7.1.1 NoSQL的起因 80
7.1.2 NoSQL的特點 81
7.1.3 NoSQL數(shù)據庫面臨的挑戰(zhàn) 82
7.1.4 NoSQL的類型 82
7.2 HBase概述 86
7.3 HBase數(shù)據模型 87
7.3.1 數(shù)據模型概述 87
7.3.2 數(shù)據模型的基本概念 88
7.3.3 概念視圖 88
7.3.4 物理視圖 89
7.4 HBase命令行 90
7.4.1 一般操作 90
7.4.2 DDL操作 90
7.4.3 DML操作 91
7.4.4 HBase表實例 93
7.5 HBase的運行機制 94
7.5.1 HBase的物理存儲 94
7.5.2 HBase的邏輯架構 95
7.6 HBase的編程 96
7.6.1 HBase的常用Java API 96
7.6.2 HBase編程實例 98
7.7 總結 101
習題 101
第三部分 大數(shù)據處理篇
第8章 大數(shù)據批處理 HADOOP MAPREDUCE 103
8.1 MapReduce概述 103
8.1.1 批處理模式 103
8.1.2 MapReduce簡釋 104
8.1.3 MapReduce基本思想 105
8.1.4 Map函數(shù)和Reduce函數(shù) 107
8.2 Hadoop MapReduce架構 109
8.3 Hadoop MapReduce的工作流程 110
8.4 實例分析:單詞計數(shù) 112
8.4.1 設計思路 112
8.4.2 處理過程 112
8.5 Hadoop MapReduce 的工作機制 113
8.5.1 Hadoop MapReduce作業(yè)執(zhí)行流程 114
8.5.2 Hadoop MapReduce的Shuffle階段 115
8.5.3 Hadoop MapReduce的主要特點 117
8.6 Hadoop MapReduce編程實戰(zhàn) 118
8.6.1 任務準備 118
8.6.2 編寫Map程序 118
8.6.3 編寫Reduce程序 119
8.6.4 編寫main函數(shù) 121
8.6.5 核心代碼包 121
8.6.6 運行代碼 122
8.7 總結 122
習題 122
第9章 大數(shù)據快速處理SPARK 124
9.1 Spark簡介 124
9.1.1 Spark與Hadoop 124
9.1.2 Spark的適用場景 126
9.2 RDD概念 126
9.2.1 RDD的基本概念 126
9.2.2 RDD基本操作 127
9.2.3 RDD血緣關系 130
9.2.4 RDD依賴類型 130
9.2.5 階段劃分 131
9.2.6 RDD緩存 132
9.3 Spark運行架構和機制 133
9.3.1 Spark總體架構 133
9.3.2 Spark運行流程 134
9.4 Spark生態(tài)系統(tǒng) 135
9.5 Spark編程實踐 137
9.5.1 啟動Spark Shell 137
9.5.2 Spark Shell使用 137
9.5.3 編寫Java應用程序 138
9.6 總結 140
習題 140
第 10章 大數(shù)據實時流計算SPARK STREAMING 143
10.1 Spark Streaming簡介 143
10.2 Spark Streaming的系統(tǒng)架構 144
10.2.1 傳統(tǒng)流處理系統(tǒng)架構 144
10.2.2 Spark Streaming系統(tǒng)架構 145
10.2.3 動態(tài)負載均衡 146
10.2.4 容錯性 147
10.2.5 實時性、擴展性與吞吐量 148
10.3 編程模型 149
10.3.1 DStream的操作流程 149
10.3.2 Spark Streaming使用 149
10.3.3 DStream的輸入源 150
10.4 DStream的操作 151
10.4.1 普通的轉換操作 151
10.4.2 窗口轉換操作 153
10.4.3 輸出操作 154
10.4.4 持久化 155
10.5 編程實戰(zhàn) 155
10.5.1 流數(shù)據模擬器 155
10.5.2 實例1:讀取文件演示 156
10.5.3 實例2:網絡數(shù)據演示 157
10.5.4 實例3:Stateful演示 158
10.5.5 實例4:窗口演示 159
10.6 總結 160
習題 161
第四部分 大數(shù)據挖掘篇
第 11章 大數(shù)據挖掘 16311.1 數(shù)據挖掘概述 163
11.1.1 什么是數(shù)據挖掘 163
11.1.2 數(shù)據挖掘的價值類型 164
11.1.3 數(shù)據挖掘算法的類型 165
11.2 Spark MLlib簡介 166
11.2.1 Spark MLlib的構成 166
11.2.2 Spark MLlib的優(yōu)勢 166
11.3 分類和預測 166
11.3.1 分類的基本概念 167
11.3.2 預測的基本概念 168
11.3.3 決策樹算法 168
11.3.4 樸素貝葉斯算法 172
11.3.5 回歸分析 175
11.3.6 小結 180
11.4 聚類分析 180
11.4.1 基本概念 180
11.4.2 聚類分析方法的類別 181
11.4.3 k-means聚類算法 184
11.4.4 DBSCAN聚類算法 187
11.4.5 小結 190
11.5 關聯(lián)分析 191
11.5.1 概述 191
11.5.2 基本概念 191
11.5.3 關聯(lián)分析步驟 192
11.5.4 Apriori關聯(lián)分析算法 193
11.5.5 FP-Tree關聯(lián)分析算法 194
11.5.6 小結 199
11.6 總結 200
習題 200
第五部分 大數(shù)據應用篇
第 12章 大數(shù)據應用 205
12.1 大數(shù)據功能應用 205
12.1.1 基于大數(shù)據的精準營銷 205
12.1.2 基于大數(shù)據的個性化推薦 208
12.1.3 大數(shù)據預測 215
12.1.4 大數(shù)據的其他應用領域 219
12.1.5 小結 221
12.2 大數(shù)據行業(yè)應用 221
12.2.1 大數(shù)據行業(yè)應用概述 221
12.2.2 金融行業(yè)大數(shù)據 222
12.2.3 互聯(lián)網行業(yè)的大數(shù)據應用 229
12.2.4 物流行業(yè)大數(shù)據應用 235
12.2.5 小結 242
12.3 總結 243
習題 243