《Spark Streaming實時流式大數據處理實戰》
Spark Streaming實時流式
大數據處理實戰
肖力濤? 編著
前言
為什么要寫這本書?
對于計算機從業人員和在校大學生而言,多少都會接觸到數據處理,如簡單的信息管理系統和利用關系型數據庫設計的存儲系統等,這類系統通常涉及的數據量比較小。而隨著互聯網的發展,企業內部的數據量也呈現爆炸式增長,隨之而來的大數據處理就會是一件非常棘手的事情。所以近年來隨著大數據概念的火爆,也涌現出了越來越多的大數據處理平臺,如Hadoop、Hive、HBase、Flume、Kafka、Storm和Spark等,讓人眼花繚亂。開發人員需要針對具體的場景和任務特點,選擇合適的工具,將它們組合起來以完成任務。
本書圍繞大數據處理領域應用最廣泛的Spark平臺展開講解,并對時下比較熱門的大數據平臺都有所介紹,以此為基礎重點切入流式大數據處理這個比較垂直和常用的領域,對Spark Streaming、Kafka和ZooKeeper等大數據處理工具進行介紹,并給出多個實戰案例,讓讀者能夠從零到一學習如何構建一個大數據處理任務,掌握如何選擇合適的處理工具,以及學習編程中一些常見的技巧。
本書特色
1.內容豐富,講解詳細
本書對大數據的相關知識體系做了詳細闡述,并對Spark平臺和Spark Streaming及其涉及的大數據平臺做了重點闡述,以方便讀者掌握常用的大數據架構平臺。
2.原理分析與應用實踐并重
本書對涉及的知識點詳細地闡述了其背后的基本原理,并給出了大量的應用實踐,便于讀者更加透徹地理解所學知識,從而在調優和排查問題等具體實踐時更加得心應手。
3.詳解大量的應用實例和實戰案例
本書中的每個章節都安排了實例,以方便讀者動手演練。另外,第8~10章還給出了3個實戰案例,以幫助讀者提高實際的項目開發水平。這些案例改寫自筆者和同事在工作中的真實應用案例,有較高的實用價值,讀者在實踐中可以進行借鑒。
4.提供詳細的源代碼
筆者對書中涉及的所有源代碼都進行了整理并開源,供讀者下載使用。讀者可以對這些代碼稍加修改,即可用于自己的項目中。
本書內容
第1篇? Spark基礎(第1~3章)
本篇重點圍繞Spark平臺進行講解,并具體就如何搭建一個自己的Spark集群進行了詳細介紹,為后面的實戰演練打下基礎。
第1章初識Spark,從Spark的歷史發展出發,重點介紹了流式處理任務,對比了不同流式處理框架,并介紹了Spark Streaming的特點。
第2章Spark運行與開發環境,主要介紹了如何搭建Spark集群,以及如何從零到一開始開發Spark應用程序,最后對從文件中進行詞頻統計的Spark應用做了介紹。
第3章Spark編程模型,對Spark的核心編程模型做了詳細講解,這對于開發Spark應用及Spark Streaming應用優化來說都是必要的。另外,本章還對RDD的各種操作做了講解。
第2篇? Spark Streaming詳解(第4~7章)
本篇重點闡述了Spark Streaming的編程模型和特點,并將一些常用的大數據平臺與Spark Streaming相結合進行講解,最后對Spark Streaming應用中常見的調優實踐進行了總結。
第4章Spark Streaming編程模型及原理,著重介紹了Spark Streaming的運行原理,并且講解了Spark Streaming應用開發的必要知識,最后以Spark Streaming接收網絡輸入流并進行詞頻統計進行實例演練。
第5章Spark Streaming與Kafka,重點介紹了Spark Streaming與Kafka配合使用的相關知識點,并介紹了在部署時常見的ZooKeeper平臺,最后利用Kafka作為Spark Streaming的輸入源進行分析操作。
第6章Spark Streaming與外部存儲介質,主要介紹了流式處理任務中如何將處理結果輸出到外部存儲介質等相關知識。本章就一些常用的數據庫與Spark Streaming結合進行講解,最后結合日志分析實例,將日志文件分析后輸出到MySQL中,可以讓讀者了解整個流程。
第7章Spark Streaming調優實踐,介紹了在實際生產中如何根據具體的數據量和任務情況對Spark Streaming進行優化修改,并且以一個具體的項目調優實例講解調優的分析過程。
第3篇? Spark Streaming案例實戰(第8~10章)
經過前兩篇的學習,讀者應該已經掌握了Spark和Spark Streaming的基本原理及開發技術。本篇在此基礎上進行實戰演練,帶領讀者完成3個大數據項目實戰案例。
第8章實時詞頻統計處理系統實戰,針對文本數據常見的流式處理任務,通過一個實戰案例,對詞頻統計從設計、實現到部署的相關知識進行了詳細講解。
第9章用戶行為統計實戰,通過一個實戰案例,介紹了在廣告行為分析和推薦系統中如何對用戶行為進行統計分析。
第10章監控報警系統實戰,對監控報警系統提出了一種架構上的設計思路,即以Kafka為數據總線串聯,利用爬蟲技術爬取數據,再用Spark Streaming進行過濾處理和后續的歸納匯總報警。
附錄A Scala語言基礎,對本書在講解時所采用的Spark源生語言Scala的基礎知識做了簡單講解,用于幫助對Scala還不是很熟悉的讀者。
本書讀者對象
閱讀本書需要讀者有一定的編程經驗,建議讀者最好對Java和C++等面向對象編程語言有一定的了解。具體而言,本書主要適合以下讀者閱讀:
* 有一定編程基礎的Spark初學者;
* 了解Spark,想進一步使用Spark Streaming的從業人員;
* 流式大數據處理程序員;
* 對Spark和Spark Streaming感興趣的程序員;
* 高校相關專業的學生;
* 大數據技術培訓機構的學員。
本書閱讀建議
* 基礎相對薄弱的讀者,可以先從附錄開始了解Scala語言的特性,然后從第1章順次閱讀本書。
* Java基礎良好的讀者可以直接順次閱讀本書,閱讀中涉及的Scala語言特性可在附錄中查閱。
* 對Spark有所了解的讀者可以直接從本書第2篇開始閱讀,即從本書第4章開始閱讀。
* 對Spark及Spark Streaming比較熟悉的讀者,可以直接動手演練本書第3篇中的3個實戰案例。
* 學習時一定要親自動手編寫代碼進行實踐,再結合實際場景才能更好地掌握相關技術。
本書配套資源
本書涉及的所有源代碼都已經開源并提供在了GitHub上,讀者可以根據自己的需要進行下載,-為https://github.com/xlturing/spark-streaming-action。另外,讀者也可以登錄華章公司的網站www.hzbook.com,在該網站上搜索到本書,然后單擊“資料下載”按鈕,再單擊頁面上的“配書資源”鏈接進行下載。
讀者反饋
由于筆者水平所限,書中可能還存在一些疏漏,敬請讀者指正,筆者會及時進行調整和修改。聯系我們可通過電子郵箱litaoxiao@gmail.com或hzbook2017@163.com。筆者會將一些反饋信息整理在博客中(http://www.cnblogs.com/xlturing)。另外也歡迎讀者關注筆者的微信公眾號pang tao1027/互聯網技術猿,筆者會定期分享一些技術文章。
致謝
感謝洪福興在第9章內容上給予筆者的寶貴意見!
感謝在騰訊工作期間,辛愿、李錚、劉績剛和方亮等人給予筆者的指導與幫助!
感謝本書編輯在本書出版過程中給予筆者的大力支持與幫助!
最后感謝我的家人在寫書上給予我的理解與支持,在遇到挫折和困難時,我的家人都堅定地支持著我。愛你們!
肖力濤
目錄
前言
第1篇? Spark基礎
第1章? 初識Spark 2
1.1? Spark由來 3
1.2? 流式處理與Spark Streaming???? 5
1.2.1? 流式處理框架????? 5
1.2.2? Spark Streaming初識?????? 7
1.2.3? Structed Streaming簡述? 8
1.3? 本章小結?? 8
第2章? Spark運行與開發環境? 9
2.1? Spark的下載與安裝????? 9
2.2? Spark運行模式?????? 10
2.2.1? 本地模式?????? 13
2.2.2? 本地集群模式????? 13
2.2.3? Standalone模式? 14
2.2.4? Spark On Yarn模式?? 15
2.2.5? Spark On Mesos模式?????? 15
2.3? 搭建開發環境? 15
2.3.1? 修改配置?????? 16
2.3.2? 啟動集群?????? 18
2.3.3? IDE配置 20
2.3.4? UI監控界面? 24
2.4? 實例——Spark文件詞頻統計??? 28
2.5? 本章小結?? 35
第3章? Spark編程模型?????? 36
3.1? RDD概述? 36
3.2? RDD存儲結構 37
3.3? RDD操作? 38
3.3.1? Transformation操作? 38
3.3.2? Action操作?? 41
3.4? RDD間的依賴方式 42
3.4.1? 窄依賴(Narrow Dependency)?? 42
3.4.2? Shuffle依賴(寬依賴Wide Dependency)????? 43
3.5? 從RDD看集群調度????? 45
3.6? RDD持久化(Cachinng/Persistence)? 46
3.7? 共享變量?? 47
3.7.1? 累加器(Accumulator)? 48
3.7.2? 廣播變量(Broadcast Variables) 50
3.8? 實例——Spark RDD操作??? 51
3.9? 本章小結?? 56
第2篇? Spark Streaming詳解
第4章? Spark Streaming編程模型及原理??? 58
4.1? DStream數據結構 58
4.2? DStream操作? 59
4.2.1? DStream Transformation操作?????? 59
4.2.2? DStream輸出操作???? 63
4.3? Spark Streaming初始化及輸入源??? 63
4.3.1? 初始化流式上下文(StreamingContext) 63
4.3.2? 輸入源及接收器(Receivers)????? 64
4.4? 持久化、Checkpointing和共享變量????? 65
4.4.1? DStream持久化(Caching/Persistence)? 65
4.4.2? Checkpointing操作?? 66
4.5? 實例——Spark Streaming流式詞頻統計????? 69
4.6? 本章小結?? 73
第5章? Spark Streaming與Kafka?? 75
5.1? ZooKeeper簡介????? 75
5.1.1? 相關概念?????? 75
5.1.2? ZooKeeper部署?? 77
5.2? Kafka簡介 79
5.2.1? 相關術語?????? 80
5.2.2? Kafka運行機制??? 81
5.2.3? Kafka部署???? 83
5.2.4? 簡單樣例?????? 85
5.3? Spark Streaming接收Kafka數據??? 86
5.3.1? 基于Receiver的方式 87
5.3.2? 直接讀取的方式? 88
5.4? Spark Streaming向Kafka中寫入數據?? 90
5.5? 實例——Spark Streaming分析Kafka數據? 92
5.6? 本章小結?? 101
第6章? Spark Streaming與外部存儲介質??? 102
6.1? 將DStream輸出到文件中? 102
6.2? 使用foreachRDD設計模式 105
6.3? 將DStream輸出到MySQL中?? 106
6.3.1? MySQL概述? 107
6.3.2? MySQL通用連接類??? 107
6.3.3? MySQL輸出操作 108
6.4? 將DStream輸出到HBase中???? 109
6.4.1? HBase概述?? 109
6.4.2? HBase通用連接類???? 110
6.4.3? HBase輸出操作? 111
6.4.4? “填坑”記錄??? 112
6.5? 將DStream數據輸出到Redis中???? 112
6.5.1? Redis安裝???? 112
6.5.2? Redis概述???? 113
6.5.3? Redis通用連接類?????? 113
6.5.4? 輸出Redis操作?? 115
6.6? 實例——日志分析 115
6.7? 本章小結?? 122
第7章? Spark Streaming調優實踐? 124
7.1? 數據序列化????? 124
7.2? 廣播大變量????? 126
7.3? 數據處理和接收時的并行度????? 127
7.4? 設置合理的批處理間隔?????? 128
7.5? 內存優化?? 128
7.5.1? 內存管理?????? 129
7.5.2? 優化策略?????? 130
7.5.3? 垃圾回收(GC)優化?????? 131
7.5.4? Spark Streaming內存優化????? 132
7.6? 實例——項目實戰中的調優示例??? 133
7.6.1? 合理的批處理時間(batchDuration) 133
7.6.2? 合理的Kafka拉取量(maxRatePerPartition參數設置)???? 134
7.6.3? 緩存反復使用的Dstream(RDD)????? 135
7.6.4? 其他一些優化策略???? 135
7.6.5? 結果 136
7.7? 本章小結?? 138
第3篇? Spark Streaming案例實戰
第8章? 實時詞頻統計處理系統實戰????? 140
8.1? 背景與設計????? 140
8.2? 代碼實現?? 142
8.2.1? 數據生成器?? 142
8.2.2? 分詞服務?????? 146
8.2.3? 流式詞頻統計????? 147
8.3? 環境配置與運行???? 158
8.3.1? 相關服務啟動????? 158
8.3.2? 查看結果?????? 160
8.4? 本章小結?? 163
第9章? 用戶行為統計實戰 164
9.1? 背景與設計????? 164
9.1.1? 不同狀態的保存方式 164
9.1.2? State設計????? 166
9.1.3? Redis存儲???? 167
9.2? 代碼實現?? 167
9.2.1? 數據生成器?? 167
9.2.2? 用戶行為統計????? 168
9.3? 環境配置與運行???? 172
9.3.1? 相關服務啟動????? 172
9.3.2? 查看結果?????? 173
9.4? 本章小結?? 175
第10章? 監控報警系統實戰????? 177
10.1? 背景與設計??? 177
10.2? 代碼實現 179
10.2.1? 簡易爬蟲子項目?????? 179
10.2.2? 流式處理子項目?????? 184
10.2.3? 歸納統計子項目?????? 191
10.2.4? 數據表情況 199
10.3? 環境配置與查看?? 200
10.3.1? 啟動各個模塊??? 200
10.3.2? 查看結果???? 200
10.4? 本章小結 203
附錄A? Scala語言基礎 204
A.1? 安裝及環境配置???? 204
A.1.1? 安裝Scala???? 204
A.1.2? 開發環境配置????? 205
A.2? Scala語法獨特性?? 206
A.2.1? 換行符??? 207
A.2.2? 統一類型?????? 207
A.2.3? Scala變量???? 208
A.2.4? 條件和循環語句? 209
A.2.5? 函數和方法?? 210
A.2.6? 特質、單例和樣例類 213
A.3? Scala集合 215
A.3.1? 集合框架?????? 216
A.3.2? 核心特質(Trait)???? 219
A.3.3? 常用的不可變集合類 222
A.3.4? 常用的可變集合類???? 225
A.3.5? 字符串??? 227
A.3.6? 數組 228
A.3.7? 迭代器(Iterators)?? 230
A.4? 其他常用特性? 231
A.4.1? 模式匹配?????? 231
A.4.2? 異常處理?????? 232
A.4.3? 文件I/O 233
Spark spark 大數據 大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。