本書將基本概念與實例相結合,由淺入深、循序漸進地對大數(shù)據(jù)思維、技術和應用做了全面系統(tǒng)的介紹。全書共12章,分為大數(shù)據(jù)基礎篇、大數(shù)據(jù)存儲篇、大數(shù)據(jù)處理篇、大數(shù)據(jù)挖掘篇和大數(shù)據(jù)應用篇。
大數(shù)據(jù)基礎篇的內容涵蓋了大數(shù)據(jù)思維理念、大數(shù)據(jù)的產(chǎn)生與作用、大數(shù)據(jù)基本概念、大數(shù)據(jù)采集工具Flume和Scribe、大數(shù)據(jù)爬蟲工具Nutch和Scapy、大數(shù)據(jù)預處理工具Kettle、大數(shù)據(jù)處理架構Hadoop;大數(shù)據(jù)存儲篇的內容包含分布式文件存儲系統(tǒng)HDFS、海量數(shù)據(jù)存儲數(shù)據(jù)庫系統(tǒng)HBase和海量數(shù)據(jù)倉庫系統(tǒng)Hive;大數(shù)據(jù)處理篇主要介紹了分布式并發(fā)計算批處理模式MapReduce,基于內存的快速處理模式Spark,以及基于實時數(shù)據(jù)流的實時處理模式Spark Streaming;大數(shù)據(jù)挖掘篇主要對分類、預測、聚類和關聯(lián)等各類大數(shù)據(jù)挖掘算法的原理和使用場景進行了描述,并使用Spark MLlib提供的機器學習算法進行了實例講解;大數(shù)據(jù)應用篇分別從大數(shù)據(jù)場景應用的橫向和縱向出發(fā),介紹了大數(shù)據(jù)在各個功能領域的應用場景和在各個行業(yè)的應用場景。
(1)本書以基本概念與實例相結合的方法,由淺入深、循序漸進地對大數(shù)據(jù)思維、技術和應用做了全面系統(tǒng)的介紹。
(2)本書在每一個環(huán)節(jié)都配有與理論學習內容相結合的案例介紹,還有使用Java和Python語言編寫的應用實例,使讀者能夠在大數(shù)據(jù)平臺上通過實踐親身體驗大數(shù)據(jù)處理和分析的過程,從而加快和加深對大數(shù)據(jù)理論和技術的理解。
(3)為了使讀者方便檢驗和復習鞏固學習到的知識,本書每章后面都配有豐富的作業(yè)供學生完成。
武志學,劍橋大學博士,曾任思杰(Citrix)公司主任研究員、成都國騰實業(yè)集團CTO、電子科技大學成都學院云計算科學與技術系第一任系主任,F(xiàn)任洛陽汽車工業(yè)大學副校長兼人工智能學院院長、成都信息工程大學大數(shù)據(jù)與安全工程中心主任、成都鼎晟數(shù)智科技有限公司董事長。兼任四川省云計算產(chǎn)業(yè)聯(lián)盟副主任、四川省高性能計算專家委員會副主任委員、成都市軟件行業(yè)協(xié)會專家委員會委員。
云計算開源平臺OpenStack頂層設計者之一,發(fā)表國際會議和期刊論文20多篇 ,獲得相關專利20余項,編寫云計算、大數(shù)據(jù)圖書4部,大數(shù)據(jù)在線培訓平臺“志學課堂” 發(fā)起人。
第 一部分 大數(shù)據(jù)基礎篇
第 1章 大數(shù)據(jù)思維 2
1.1 什么是大數(shù)據(jù) 2
1.2 從IT時代到大數(shù)據(jù)時代 4
1.3 大數(shù)據(jù)的產(chǎn)生與作用 5
1.3.1 大數(shù)據(jù)的產(chǎn)生 6
1.3.2 大數(shù)據(jù)的作用 6
1.4 大數(shù)據(jù)時代的新理念 7
1.4.1 對研究范式的新認識:從第三范式到第四范式 7
1.4.2 對數(shù)據(jù)重要性的新認識:從數(shù)據(jù)資源到數(shù)據(jù)資產(chǎn) 8
1.4.3 對方法論的新認識:從基于知識到基于數(shù)據(jù) 9
1.4.4 對數(shù)據(jù)分析的新認識:從統(tǒng)計學到數(shù)據(jù)科學 9
1.4.5 對計算智能的新認識:從復雜算法到簡單算法 10
1.4.6 對管理目標的新認識:從業(yè)務數(shù)據(jù)化到數(shù)據(jù)業(yè)務化 11
1.4.7 對決策方式的新認識:從目標驅動型到數(shù)據(jù)驅動型 12
1.4.8 對產(chǎn)業(yè)競合關系的新認識:從以戰(zhàn)略為中心到以數(shù)據(jù)為中心 12
1.4.9 對數(shù)據(jù)復雜性的新認識:從不接受到接受數(shù)據(jù)的復雜性 13
1.4.10 對數(shù)據(jù)處理模式的新認識:從小眾參與到大眾協(xié)同 14
1.5 總結 14
習題 14
第 2章 大數(shù)據(jù)技術概述 15
2.1 大數(shù)據(jù)處理的基本流程 15
2.1.1 數(shù)據(jù)抽取與集成 16
2.1.2 數(shù)據(jù)分析 16
2.1.3 數(shù)據(jù)解釋 16
2.2 大數(shù)據(jù)關鍵技術 17
2.2.1 大數(shù)據(jù)采集技術 17
2.2.2 大數(shù)據(jù)預處理技術 17
2.2.3 大數(shù)據(jù)存儲及管理技術 18
2.2.4 大數(shù)據(jù)處理 19
2.2.5 大數(shù)據(jù)分析及挖掘技術 19
2.2.6 大數(shù)據(jù)展示技術 20
2.3 總結 21
習題 21
第3章 大數(shù)據(jù)采集 22
3.1 大數(shù)據(jù)采集概述 22
3.1.1 大數(shù)據(jù)分類 22
3.1.2 大數(shù)據(jù)采集方法分類 23
3.2 系統(tǒng)日志采集方法 24
3.2.1 Flume的基本概念 24
3.2.2 Flume使用方法 25
3.2.3 Flume應用案例 26
3.3 網(wǎng)絡數(shù)據(jù)采集方法 27
3.3.1 網(wǎng)絡爬蟲原理 27
3.3.2 網(wǎng)絡爬蟲工作流程 28
3.3.3 網(wǎng)絡爬蟲抓取策略 28
3.3.4 Scrapy網(wǎng)絡爬蟲系統(tǒng) 32
3.3.5 小結 36
3.4 總結 36
習題 36
第4章 大數(shù)據(jù)預處理 37
4.1 大數(shù)據(jù)預處理概述 37
4.1.1 大數(shù)據(jù)預處理整體架構 37
4.1.2 數(shù)據(jù)質量問題分類 38
4.1.3 大數(shù)據(jù)預處理方法 38
4.2 數(shù)據(jù)清洗 39
4.2.1 遺漏數(shù)據(jù)處理 40
4.2.2 噪聲數(shù)據(jù)處理 40
4.2.3 不一致數(shù)據(jù)處理 42
4.3 數(shù)據(jù)集成 42
4.4 數(shù)據(jù)轉換 42
4.5 數(shù)據(jù)消減 44
4.5.1 數(shù)據(jù)立方合計 44
4.5.2 維數(shù)消減 44
4.5.3 數(shù)據(jù)壓縮 45
4.5.4 數(shù)據(jù)塊消減 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ù)據(jù)流處理 52
4.8 總結 55
習題 56
第5章 大數(shù)據(jù)處理系統(tǒng) 57
5.1 大數(shù)據(jù)技術概述 57
5.1.1 分布式計算 57
5.1.2 服務器集群 57
5.1.3 大數(shù)據(jù)的技術基礎 57
5.2 Google大數(shù)據(jù)處理系統(tǒng) 58
5.2.1 GFS 58
5.2.2 MapReduce 60
5.2.3 BigTable 60
5.3 Hadoop大數(shù)據(jù)處理系統(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ù)據(jù)存儲篇
第6章 大數(shù)據(jù)文件系統(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ù)據(jù)復制 70
6.4 HDFS數(shù)據(jù)訪問機制 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ù)據(jù)庫HBASE 80
7.1 NoSQL概述 80
7.1.1 NoSQL的起因 80
7.1.2 NoSQL的特點 81
7.1.3 NoSQL數(shù)據(jù)庫面臨的挑戰(zhàn) 82
7.1.4 NoSQL的類型 82
7.2 HBase概述 86
7.3 HBase數(shù)據(jù)模型 87
7.3.1 數(shù)據(jù)模型概述 87
7.3.2 數(shù)據(jù)模型的基本概念 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ù)據(jù)處理篇
第8章 大數(shù)據(jù)批處理 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ù)據(jù)快速處理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ù)據(jù)實時流計算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ù)據(jù)模擬器 155
10.5.2 實例1:讀取文件演示 156
10.5.3 實例2:網(wǎng)絡數(shù)據(jù)演示 157
10.5.4 實例3:Stateful演示 158
10.5.5 實例4:窗口演示 159
10.6 總結 160
習題 161
第四部分 大數(shù)據(jù)挖掘篇
第 11章 大數(shù)據(jù)挖掘 16311.1 數(shù)據(jù)挖掘概述 163
11.1.1 什么是數(shù)據(jù)挖掘 163
11.1.2 數(shù)據(jù)挖掘的價值類型 164
11.1.3 數(shù)據(jù)挖掘算法的類型 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ù)據(jù)應用篇
第 12章 大數(shù)據(jù)應用 205
12.1 大數(shù)據(jù)功能應用 205
12.1.1 基于大數(shù)據(jù)的精準營銷 205
12.1.2 基于大數(shù)據(jù)的個性化推薦 208
12.1.3 大數(shù)據(jù)預測 215
12.1.4 大數(shù)據(jù)的其他應用領域 219
12.1.5 小結 221
12.2 大數(shù)據(jù)行業(yè)應用 221
12.2.1 大數(shù)據(jù)行業(yè)應用概述 221
12.2.2 金融行業(yè)大數(shù)據(jù) 222
12.2.3 互聯(lián)網(wǎng)行業(yè)的大數(shù)據(jù)應用 229
12.2.4 物流行業(yè)大數(shù)據(jù)應用 235
12.2.5 小結 242
12.3 總結 243
習題 243