本書圍繞互聯網重大的技術革命:云計算、大數據進行闡述。云計算環(huán)境下大數據處理構建是國民經濟發(fā)展的信息基礎設施,發(fā)展自主的云計算核心技術,擁有自己的信息基礎設施,當前正處于重要的機遇期。
本書重點在大數據與云計算的融合,給出了大數據與云計算的一些基本概念,并以Spark為開發(fā)工具,全面講述云環(huán)境下的Spark大數據技術部署與典型案例算法實現,*后介紹了國內經典Spark大數據與云計算融合的架構與算法。
本書適合云計算環(huán)境下Spark大數據技術人員、Spark MLlib機器學習技術人員,也適合高等院校和培訓機構相關專業(yè)的師生教學參考。
以云計算與大數據融合的視角闡述了云計算環(huán)境下Spark大數據處理與相應的算法實現結合經典案例,詳解云計算環(huán)境下Spark大數據處理生態(tài)圈,包括系統結構、大數據存儲、批處理、流計算、交互式數據分析、并行機器學習架構與算法等技術掌握云計算環(huán)境下Spark大數據處理的架構搭建和算法實現過程等關鍵技術,擴展大數據從業(yè)人員的理論與實踐能力
麥肯錫全球研究所給出的大數據定義是:一種規(guī)模大到在獲取、存儲、管理、分析方面大大超出了傳統數據庫軟件工具能力范圍的數據集合,具有海量的數據規(guī)模、快速的數據流轉、多樣的數據類型和價值密度低四大特征。
大數據技術的戰(zhàn)略意義不在于獲取了龐大的數據,而在于對這些特定領域的數據進行處理分析。換而言之,關鍵是把這些巨大的數據實現盈利式的加工,提供效率,具有增值的處理模式。
本書背景
大數據像颶風一樣席卷而來,改變著信息時代的數據處理方式。產業(yè)經營方式經歷著革命性的變革,大數據與云計算的融合改變著數據處理流程和模式,對互聯網、信息經濟發(fā)展提出了新的方向和擴展空間。應用驅動技術發(fā)展產生的數據越多,可供分析的數據越多,越能推動研發(fā)和出現更先進的用來分析數據的工具和方法。
國家對互聯網、信息經濟的發(fā)展提出了方向,明確說要拓展發(fā)展新的空間,實施網絡強國戰(zhàn)略,實施互聯網 行動計劃,發(fā)展分享經濟,實施國家大數據戰(zhàn)略,將網絡強國戰(zhàn)略作為新的一個創(chuàng)新的重要支撐。
本書內容
本書圍繞互聯網重大的技術革命:云計算、大數據(未來世界新一代信息技術的關鍵和核心)進行闡述。云計算環(huán)境下大數據處理構建是國民經濟發(fā)展的信息基礎設施,發(fā)展自主的云計算核心技術,擁有自己的信息基礎設施,當前正處于重要的發(fā)展機遇期。本書重點在大數據與云計算的融合,給出了大數據與云計算的一些基本概念的同時,以Spark為開發(fā)工具,全面講述云環(huán)境下的大數據技術部署與典型案例算法實現,最后介紹了國內經典Spark大數據與云計算融合的架構與算法。
本書目的
3年前就開始著手準備寫關于大數據和云計算融合的相關技術方面的書,由于書中的算法需要模擬驗證,所以交稿拖延了很長時間。目前這方面的書還不系統,還沒有全面融合兩者技術的書出現,也是筆者想寫這本書的初衷。隨著歲月侵蝕,白發(fā)雜生,大數據技術發(fā)展也日新月異。
得益于國內IT企業(yè)的后發(fā)制人戰(zhàn)略,目前國內的IT公司在大數據應用方面已經迎頭趕上了國際巨頭,在云大數據技術方面的研發(fā)和技術突破經歷了大幅的跨越發(fā)展。當今世界迎來大數據時代,工欲善其事,必先利其器,在大數據和云計算的規(guī)則制定和新技術研發(fā)上還需努力,這方面還需要加大研發(fā)與突破。
致謝
感謝家人給我的全身心的支持與關愛,沒有你們的寬容與支持即使是10年也沒法完成這本書。由于撰寫時間緊迫,夜晚孤燈,每晚多想陪著妻子月夜樹影婆娑,多想在閨女的校門口等待閨女背著書包顛顛地跑來。最后感謝單位給予的大力支持與幫助。
著者
2017年8月
鄧立國,東北大學計算機應用博士畢業(yè)。2005年開始在沈陽師范大學軟件學院、教育技術學院任教,主要研究方向:數據挖掘、知識工程、大數據處理、云計算、分布式計算等。以第一作者發(fā)表學術論文30多篇(26篇EI),主編教材 1 部,主持科研課題6項,經費10余萬元,多次獲得校級科研優(yōu)秀獎,作為九三社員提出的智慧城市提案被市政府采納,研究成果被教育廳等單位采用。
第1章 大數據處理概述 1
1.1 大數據處理技術概述 1
1.1.1
什么是大數據 1
1.1.2
大數據來源 2
1.1.3
大數據應用價值 3
1.1.4
大數據技術特點和研究內容 4
1.1.5
大數據計算與系統 5
1.2 數據挖掘及其相關領域應用
9
1.2.1
數據挖掘概述 9
1.2.2
數據挖掘與機器學習 11
1.2.3
數據挖掘與數據庫 11
1.2.4
數據挖掘與統計學 12
1.2.5
數據挖掘與決策支持 12
1.2.6
數據挖掘與云計算 13
1.3 大數據應用 13
1.3.1
大數據應用案例 13
1.3.2
大數據應用場景 14
1.3.3
大數據應用平臺方案案例 21
1.4 并行計算簡介 23
1.5
Hadoop介紹 24
1.6 本章小結 26
第2章 云計算時代 27
2.1 云計算概述 27
2.1.1
云計算概念 27
2.1.2
云計算發(fā)展簡史 28
2.1.3
云計算實現機制 30
2.1.4
云計算服務形式 31
2.1.5
云計算時代的數據庫NoSQL 32
2.2 云計算發(fā)展動力源泉 34
2.3 云計算技術分析 34
2.3.1
編程模式 34
2.3.2
海量數據云存儲技術 37
2.3.3
海量數據管理技術 38
2.3.4
虛擬化技術 39
2.3.5
分布式計算 41
2.3.6
云監(jiān)測技術 41
2.4 并行計算與云計算關系 43
2.4.1
并行計算與云計算 44
2.4.2
MapReduce 45
2.5 云計算發(fā)展優(yōu)勢 51
2.6 向云實現遷移 53
2.7 本章小結 55
第3章 大數據與云計算關系 56
3.1 云計算與大數據關系 56
3.2 大數據與云計算的融合是認識世界的新工具 57
3.3 大數據隱私保護是大數據云快速發(fā)展和運用的重要前提 59
3.3.1
云計算的安全隱私 60
3.3.2
大數據的安全隱私 60
3.4 大數據成就云計算價值 62
3.5 數據向云計算遷移 63
3.6 大數據清洗 64
3.7 云計算時代的數據集成技術
66
3.8 云推薦 67
3.9 本章小結 68
第4章 Spark大數據處理基礎 69
4.1
Spark大數據處理技術 69
4.1.1
Spark系統概述 69
4.1.2
Spark生態(tài)系統BDAS(伯利克分析棧) 70
4.1.3
Spark的用武之地 71
4.1.4
Spark大數據處理框架 72
4.1.5
Spark運行模式分類及術語 73
4.2
Spark 2.0.0安裝配置 74
4.2.1
在Linux集群上安裝與配置Spark 74
4.2.2
Spark Shell 81
4.2.3
Spark RDD 88
4.2.4
Shark(Hive on Spark大型的數據倉庫系統) 91
4.3
Spark配置 92
4.3.1
環(huán)境變量 92
4.3.2
系統屬性 93
4.3.3
配置日志 95
4.3.4
Spark 硬件配置 95
4.4
Spark模式部署概述 96
4.5
Spark Streaming實時計算框架 98
4.6
Spark SQL 查詢、DataFrames分布式數據集和Datasets API 101
4.7
Spark起始點 102
4.7.1
SparkSession 102
4.7.2
SQLContext 103
4.7.3
創(chuàng)建DataFrame 104
4.7.4
無類型的Dataset操作(aka DataFrame Operations) 105
4.7.5
編程執(zhí)行SQL查詢語句 111
4.7.6
創(chuàng)建Dataset 112
4.7.7
和RDD互操作 115
4.8
Spark數據源 125
4.8.1
通用加載/保存函數 125
4.8.2
Parquet文件 127
4.8.3
JSON數據集 135
4.8.4
Hive表 136
4.8.5
用JDBC連接其他數據庫 143
4.9
Spark性能調優(yōu) 144
4.10
分布式SQL引擎 145
4.11
本章小結 146
第5章 Spark MLlib機器學習算法實現 147
5.1
Spark MLlib基礎 147
5.1.1
機器學習 148
5.1.2
機器學習分類 148
5.1.3
機器學習常見算法 149
5.1.4
Spark MLlib機器學習庫 152
5.1.5
基于Spark常用的算法舉例分析 156
5.2
Spark MLlib矩陣向量 159
5.2.1
Breeze創(chuàng)建函數 159
5.2.2
Breeze元素訪問 161
5.2.3
Breeze元素操作 162
5.2.4
Breeze數值計算函數 165
5.2.5
Breeze求和函數 166
5.2.6
Breeze布爾函數 167
5.2.7
Breeze線性代數函數 168
5.2.8
Breeze取整函數 169
5.2.9
Breeze三角函數 170
5.2.10
BLAS向量運算 170
5.3
Spark MLlib線性回歸算法 171
5.3.1
線性回歸算法理論基礎 171
5.3.2
線性回歸算法 172
5.3.3
Spark MLlib Linear Regression源碼分析 174
5.4
Spark MLlib邏輯回歸算法 183
5.4.1
邏輯回歸算法 184
5.4.2
Spark MLlib Logistic Regression源碼分析 186
5.5
Spark MLlib樸素貝葉斯分類算法 199
5.5.1
樸素貝葉斯分類算法 200
5.5.2
樸素貝葉斯Spark MLlib源碼 203
5.6
Spark MLlib決策樹算法 217
5.6.1
決策樹算法 217
5.6.2
決策樹實例 220
5.7
Spark MLlib KMeans聚類算法 227
5.7.1
KMeans聚類算法 227
5.7.2
Spark MLlib KMeans源碼分析 228
5.7.3
MLlib KMeans實例 235
5.8
Spark MLlib FPGrowth關聯規(guī)則算法 236
5.8.1
基本概念 236
5.8.2
FPGrowth算法 237
5.8.3
Spark MLlib FPGrowth源碼分析 241
5.9
Spark MLlib協同過濾推薦算法 244
5.9.1
協同過濾概念 244
5.9.2
相似度度量 245
5.9.3
協同過濾算法按照數據使用分類 246
5.9.4
Spark MLlib協同過濾算法實現 247
5.9.5
Spark MLlib電影評級推薦 252
5.10
Spark MLlib神經網絡算法 261
5.11
本章小結 264
第6章 Spark大數據架構系統部署 265
6.1 大數據架構介紹 265
6.2 典型的商務使用場景 266
6.2.1
客戶行為分析 266
6.2.2
情緒分析 267
6.2.3
CRM Onboarding 267
6.2.4
預測 268
6.3
Spark三種分布式部署模式 268
6.3.1
Standalone模式 268
6.3.2
Spark On Mesos 模式 269
6.3.3
Spark On YARN模式 269
6.4 創(chuàng)建大數據架構 270
6.4.1
數據采集 270
6.4.2
數據接入 271
6.4.3
Spark流式計算 273
6.4.4
數據輸出 274
6.4.5
日志攝取 274
6.4.6
機器學習 277
6.4.7
處理引擎 277
6.5
Spark單個機器集群部署 278
6.6 本章小結 280
第7章 Spark大數據處理案例分析 282
7.1
Spark on Amazon EMR 282
7.1.1
Amazon EMR 282
7.1.2
配置 Spark 283
7.1.3
以交互方式或批處理模式使用 Spark 284
7.1.4
使用 Spark 創(chuàng)建集群 285
7.1.5
訪問 Spark 外殼 286
7.1.6
添加 Spark 287
7.2
Spark在AWSKrux的應用 289
7.3
Spark在商業(yè)網站中的應用 290
7.4
Spark在Yahoo!的應用 291
7.5
Spark在Amazon EC2上運行 292
7.6 淘寶應用Spark on
YARN架構 296
7.7 騰訊云大數據解決方案
297
7.8 雅虎開源TensorFlowOnSpark
298
7.9 阿里云E-MapReduce
301
7.10
SequoiaDB Spark 打造一體化
大數據平臺 304
7.11
本章小結 305
第8章 大數據發(fā)展展望 306
8.1 大數據未來發(fā)展趨勢 306
8.2 大數據給人類帶來的認知沖擊
307
8.3 未來大數據研究突破的技術問題 308
8.4 本章小結 309
附錄 Spark MLlib神經網絡算法 312
參考文獻 338