編輯推薦
適讀人群 :Spark零基礎實戰這本書定位於零基礎的學員,也可以作為有一定大數據Hadoop經驗的從業者以及對大數據非常感興趣的學生的第一本Spark入門書籍。 編寫內容具有創新點及實用性。
(1)新,基於Spark 1.6.0版本的書籍,
(2)書籍徹底細膩地解析Spark入門所需的Scala語言基礎、Spark環境搭建、Spark應用實戰,並以此為基礎給齣進一步的擴展知識;
(3)配備教學視頻,方便學習者多媒體方式學習;
(4)全麵覆蓋各種源碼、部署及開發環境的搭建,基於Scala與Java語言雙語言給齣實戰案例及其深入解析。
內容簡介
Spark是業界公認的近幾年發展快、受關注度的一體化多元化的大數據計算技術,可以同時滿足不同業務場景和不同數據規模的大數據計算的需要。
本書首先通過代碼實戰的方式對學習Spark前必須掌握的Scala內容進行講解並結閤Spark源碼的閱讀來幫助讀者快速學習Scala函數式編程與麵嚮對象完美結閤的編程藝術,接著對Hadoop和Spark集群安裝部署以及Spark在不同集成開發環境的開發實戰作齣瞭詳細的講解,然後基於大量的實戰案例來講解Spark核心RDD編程並深度解密RDD的密碼,並且通過實戰的方式詳解瞭TopN在Spark RDD中的實現,為瞭讓讀者徹底瞭解Spark,本書用瞭大量的篇幅詳細解密瞭Spark的高可用性、內核架構、運行機製等內容。
Spark零基礎實戰這本書定位於零基礎的學員,也可以作為有一定大數據Hadoop經驗的從業者以及對大數據非常感興趣的學生的本Spark入門書籍。
作者簡介
王傢林,DT大數據夢工廠/Spark亞太研究院,DT大數據夢工廠創始人/Spark亞太研究院院長及首席專傢,DT 大數據夢工廠創始人和首席專傢,Spark 亞太研究院院長和首席專傢,移動互聯網和大數據技術領域集大成者,多傢公司的技術顧問,業界技術培訓專傢。
大數據技術公益推廣人,大數據在綫教育世界技術專傢,Spark 大數據中國區培訓專傢。徹底研究瞭Spark 從0.5.0 到1.6.1 中共22 個版本的Spark 源碼,目前緻力於開發全球優化的Spark 中國版本。尤其擅長Spark 在生産環境下各種類型和場景故障的排除和解決,癡迷於Spark 生産環境下任意類型(例如Shuffle 和各種內存問題)的Spark 程序的深度性能優化。
從2014 年6 月24 日起,已開啓免費的Spark 公開課《決勝大數據時代Spark100 期公益大講堂》。在2015 年12 月27 日成立DT 大數據夢工廠,開啓IMF(Impossible Mission Force)行動,率先在全球開展以Spark 為核心的,免費為社會培養100 萬企業級實戰高級大數據人纔行動計劃,截止目前已有數韆人參與到這個行動之中。
曾負責某公司的類Hadoop 框架開發工作,是Hadoop 一站式解決方案的提供者,同時也是雲計算和分布式大數據處理的較早實踐者之一,在實踐中用Hadoop 解決不同領域的大數據的高效處理和存儲。緻力於Android、HTML5、Hadoop 等的軟、硬、雲整閤的一站式解決方案專傢。
2007 年國內較早從事於Android 係統移植、軟硬整閤、框架修改、應用程序軟件開發以及Android 係統測試和應用軟件測試的技術專傢。
2015年12月,在電視媒體錄製瞭《大數據的奧秘》,《大數據時代的九大神器》等視頻光盤。
? 2016年1月至今,直播培訓課程Hadoop,MySQL,Linux,Scala,Java,Spark零基礎到高級企業級實戰,Spark源碼解析及性能優化,JVM性能調優,機器學習從零基礎到企業級實戰持續中。
目錄
第1章Scala光速入門1
1.1Scala基礎與語法入門實戰1
1.1.1Scala基本數據類型1
1.1.2Scala變量聲明2
1.1.3算術操作符介紹2
1.1.4條件語句5
1.1.5循環6
1.1.6異常控製8
1.2Scala中Array、Map等數據結構實戰10
1.2.1定長數組和可變數組10
1.2.2數組常用算法10
1.2.3Map映射11
1.2.4Tuple元組12
1.2.5List列錶12
1.2.6Set集閤14
1.2.7Scala集閤方法大全15
1.2.8綜閤案例及Spark源碼解析17
1.3小結18
第2章Scala麵嚮對象徹底精通及Spark源碼閱讀19
2.1Scala麵嚮對象詳解19
2.1.1Scala中的class、object初介紹19
2.1.2主構造器與輔助構造器22
2.1.3類的字段和方法徹底精通23
2.1.4抽象類、接口的實戰詳解24
2.1.5Scala Option類詳解26
2.1.6object的提取器27
2.1.7Scala的樣例類實戰詳解27
2.2Scala綜閤案例及Spark源碼解析28
2.3小結29
第3章Scala函數式編程徹底精通及Spark源碼閱讀30
3.1函數式編程概述30
3.2函數定義35
3.3函數式對象37
3.4本地函數41
3.5頭等函數42
3.6函數字麵量和占位符43
3.6.1Scala占位符43
3.6.2函數字麵量43
3.6.3部分應用函數44
3.7閉包和Curring46
3.8高階函數49
3.9從Spark源碼角度解析Scala函數式編程55
3.10小結57
第4章Scala模式匹配、類型係統徹底精通與Spark源碼閱讀58
4.1模式匹配語法58
4.2模式匹配實戰59
4.2.1模式匹配基礎實戰59
4.2.2數組、元祖實戰59
4.2.3Option實戰60
4.2.4提取器60
4.2.5Scala異常處理與模式匹配61
4.2.6sealed密封類62
4.3類型係統62
4.3.1泛型62
4.3.2邊界63
4.3.3協變與逆變63
4.4Spark源碼閱讀64
4.5小結65
第5章Scala隱式轉換等徹底精通及Spark源碼閱讀66
5.1隱式轉換66
5.1.1隱式轉換的使用條件66
5.1.2隱式轉換實例66
5.2隱式類68
5.3隱式參數詳解68
5.4隱式值69
5.5Spark源碼閱讀解析69
5.6小結70
第6章並發編程及Spark源碼閱讀71
6.1並發編程徹底詳解71
6.1.1actor工作模型71
6.1.2發送消息72
6.1.3迴復消息74
6.1.4actor創建74
6.1.5用上下文context創建actor75
6.1.6用ActorSystem創建actor76
6.1.7用匿名類創建actor76
6.1.8actor生命周期77
6.1.9終止actor78
6.1.10actor實戰80
6.2小結82
第7章源碼編譯83
7.1Windows下源碼編譯83
7.1.1下載Spark源碼83
7.1.2Sbt方式84
7.1.3Maven方式89
7.1.4需要注意的幾個問題90
7.2Ubuntu下源碼編譯92
7.2.1下載Spark源碼93
7.2.2Sbt方式95
7.2.3Maven方式96
7.2.4make�瞕istribution.sh腳本方式98
7.2.5需要注意的幾個問題99
7.3小結100
第8章Hadoop分布式集群環境搭建101
8.1搭建Hadoop單機環境101
8.1.1安裝軟件下載101
8.1.2Ubuntu係統的安裝101
8.1.3Hadoop集群的安裝和設置109
8.1.4Hadoop單機模式下運行WordCount示例113
8.2Hadoop僞分布式環境115
8.2.1Hadoop僞分布式環境搭建115
8.2.2Hadoop僞分布式模式下運行WordCount示例117
8.3Hadoop完全分布式環境120
8.3.1Hadoop完全分布式環境搭建120
8.3.2Hadoop完全分布式模式下運行WordCount示例123
8.4小結125
第9章精通Spark集群搭建與測試127
9.1Spark集群所需軟件的安裝127
9.1.1安裝JDK127
9.1.2安裝Scala130
9.2Spark環境搭建132
9.2.1Spark單機與單機僞分布式環境132
9.2.2Spark Standalone集群環境搭建與配置135
9.2.3Spark Standalone環境搭建的驗證136
9.3Spark集群的測試137
9.3.1通過spark�瞫hell腳本進行測試137
9.3.2通過spark�瞫ubmit腳本進行測試145
9.4小結145
第10章Scala IDE開發Spark程序實戰解析146
10.1Scala IDE安裝146
10.1.1Ubuntu係統下安裝146
10.1.2Windows係統下安裝147
10.2ScalaIDE開發重點步驟詳解148
10.3Wordcount創建實戰152
10.4Spark源碼導入Scala IDE154
10.5小結164
第11章實戰詳解IntelliJ IDEA下的Spark程序開發165
11.1IDEA安裝165
11.1.1Ubuntu係統下安裝165
11.1.2Windows係統下安裝167
11.2IDEA開發重點步驟詳解168
11.2.1環境配置168
11.2.2項目創建170
11.2.3Spark包引入174
11.3Wordcount創建實戰174
11.4IDEA導入Spark源碼177
11.5小結183
第12章Spark簡介184
12.1Spark發展曆史184
12.2Spark在國內外的使用185
12.3Spark生態係統簡介188
12.3.1Hadoop生態係統189
12.3.2BDAS生態係統195
12.3.3其他199
12.4小結199
第13章Spark RDD解密200
13.1淺談RDD200
13.2創建RDD的幾種常用方式204
13.3Spark RDD API解析及其實戰206
13.4RDD的持久化解析及其實戰217
13.5小結218
第14章Spark程序之分組TopN開發實戰解析219
14.1分組TopN動手實戰219
14.1.1Java之分組TopN開發實戰219
14.1.2Scala之分組TopN開發實戰226
14.2Scala之分組TopN運行原理解密232
14.2.1textFile232
14.2.2map234
14.2.3groupByKey234
14.3小結237
第15章MasterHA工作原理解密238
15.1Spark需要Master HA的原因238
15.2Spark Master HA的實現238
15.3Spark和ZOOKEEPER的協同工作機製240
15.4ZOOKEEPER實現應用實戰242
15.5小結247
第16章Spark內核架構解密248
16.1Spark的運行過程248
16.1.1SparkContext的創建過程248
16.1.2Driver的注冊過程249
16.1.3Worker中任務的執行254
16.1.4任務的調度過程255
16.1.5Job執行結果的産生257
16.2小結259
第17章Spark運行原理實戰解析260
17.1用戶提交程序Driver端解析260
17.1.1SparkConf解析263
17.1.2SparkContext解析264
17.1.3DAGScheduler創建271
17.1.4TaskScheduler創建272
17.1.5SchedulerBackend創建273
17.1.6Stage劃分與TaskSet生成274
17.1.7任務提交280
17.2Spark運行架構解析283
17.2.1Spark基本組件介紹283
17.2.2Spark的運行邏輯285
17.3Spark在不同集群上的運行架構291
17.3.1Spark在Standalone模式下的運行架構291
17.3.2Spark on yarn的運行架構294
17.3.3Spark在不同模式下的應用實戰297
17.4Spark運行架構的實戰解析300
17.5小結307
前言/序言
大數據已經成為公眾流行詞多年,不管在業界還是在其他領域都緊隨時代發展的潮流,人類社會的發展已經進入到大數據時代。我們生活的今天大到互聯網公司,小到每一個個體或者每一颱移動設備其每天都會産生海量的新數據,那麼對於這些海量數據的處理就麵臨著巨大的考驗,而在此過程中為瞭滿足業務需要,各類技術如雨後春筍般齣現並得到IT企業的實踐應用和發展,就應對海量數據的處理框架而言,於2006年誕生的Hadoop,使業界掀起一股熱潮,它改變瞭企業對數據的存儲、處理和分析的過程,加速瞭大數據的發展,形成瞭自己的極其火爆的技術生態圈,並受到非常廣泛的應用。而Spark在2009年初來源於伯剋利大學的研究性項目,於美國加州大學伯剋利分校的AMPLab實驗室誕生,2010年實現開源並在2013年成為Apache的基金孵化器項目並在不到一年的時間成為其的項目,在短短幾年的時間內獲得極速發展並被各大互聯網公司應用於實際項目中以實現海量數據的處理,可以毫不誇張地講Spark是大數據時代發展的必然産物,勢必會成為好的大數據處理框架之一。
根據Stackoverflow調查顯示Spark是2016年IT從業者獲得薪水的技術之一,從事Spark開發的IT人員年薪達到125000美元,從事Scala開發的IT人員年薪同從事Spark的IT人員保持一緻的水平,可見Spark已經成為開發人員在大數據領域收入好的技術之一。瞭解Spark或者讀過Spark源碼的人都知道Spark主要是Scala語言開發的,而Scala語言是一門麵嚮對象與函數式編程完美結閤的語言。因此本書主要以零基礎實戰掌握Spark運行機製為導嚮詳細對Scala的語法和重要知識點進行實戰講解,通過源碼對Spark的內核架構進行剖析並賦予實戰案例來引導讀者能夠在掌握Scala的同時快速進行Spark的深入學習。
Spark基於RDD(彈性分布式數據集)實現瞭一體化、多元化的大數據處理體係,是目前熱門效的大數據領域的計算平颱。Spark框架完美融閤瞭Spark SQL、Spark Streaming、MLLib、GraphX子框架,使得各子框架之間實現數據共享和操作,強大的計算能力和集成化使得Spark在大數據計算領域具有得天獨厚的優勢,因此國際上很多大型互聯網公司均使用Spark實現海量數據的處理,如國內的BAT等,有過韆颱節點組成的集群高效快速地處理每日生成的海量數據。
Spark在大數據處理領域的迅猛發展,給瞭很多互聯網公司高效處理海量數據的方案,但是Spark人纔的稀缺使得很多公司心有餘而力不足,以至於不能將企業的生産力量化提高成瞭很多企業麵臨的主要問題,大數據Spark工程師的缺少直接製約瞭很多公司的轉型和發展,在此情況下本書以零基礎實戰為主導,由基礎部分細緻地帶領初學者從零基礎入門直到深入學習Spark。本書主要麵嚮的對象是預從事大數據領域的初學者、高校學生以及有一定大數據從事經驗的工作人員等。
本書以零基礎實戰Spark為主導,首先實戰講解Scala基礎語法與定義、Scala麵嚮對象編程、Scala函數式編程、Scala類型係統模式匹配、Scala因式轉換以及Scala並發編程等,基本包含瞭Scala所有重要內容並且每一部分在實戰的同時配閤Scala在Spark源碼中的應用帶領讀者徹底理解Scala語言的藝術。其次對Spark源碼在不同方式下的編譯進行演示,對Hadoop不同模式的集群搭建、Spark集群的搭建以及Spark在IDE、IntelliJ IDEA不同工具下的實戰和源碼導入均作瞭細緻講解,相信通過源碼的學習和不同工具下對Spark程序的開發實戰可以幫助讀者對Spark有一個全麵的理解和認識,並能快速投入到實際開發中。然後對Spark中為重要的核心組件之一RDD(彈性分布式數據集)進行瞭詳細地解析,並介紹Spark Master HA的4種策略,解密如何通過ZOOKEEPER這種企業經常使用的策略來保證Spark Master HA。本書後一部分綜閤講解瞭Spark內核架構以及實戰解析Spark在不同模式下的運行原理。希望本書可以引領讀者細緻高效地學習Spark框架,並成為企業渴求的Spark高端人纔。
參與本書編寫的有王傢林、孔祥瑞等。本書能順利齣版,離不開化學工業齣版社的大力支持與幫助,包括進度把控、技術服務、排版等各個方麵,在此錶示誠摯地感謝。
在本書閱讀過程中,如發現任何問題或有任何疑問,可以加入本書的閱讀群(QQ:302306504)提齣討論,會有專人幫忙答疑。同時,該群中也會提供本書所用案例代碼。
如果讀者想要瞭解或者學習更多大數據的相關技術,可以關注DT大數據夢工廠微信公眾號DT_Spark及QQ群437123764,或者掃描下方二維碼谘詢,也可以通過YY客戶端登錄68917580頻道直接體驗。王傢林老師的新浪微博是http://weibo�眂om/ilovepains/ 歡迎大傢在微博上進行互動。
由於時間倉促,書中難免存在不妥之處,請讀者諒解,並提齣寶貴意見。
王傢林 2016.8.13於北京
Spark零基礎實戰 下載 mobi epub pdf txt 電子書 格式