《實時數(shù)據(jù)處理和分析指南》主要介紹實時大數(shù)據(jù)計算領(lǐng)域的相關(guān)技巧和經(jīng)驗,包括Flink、Spark和Storm等流處理框架技術(shù)。全書從搭建開發(fā)環(huán)境開始,逐步實現(xiàn)流處理,循序漸進地引導(dǎo)讀者學(xué)習(xí)如何利用Rabbit MQ、Kafka和NiFi以及Storm、Spark、Flink和Beam等組件協(xié)同應(yīng)用來解決實際問題。
本書內(nèi)容分為6個部分,分別是“導(dǎo)言——熟悉實時分析”“搭建基礎(chǔ)設(shè)施”“Storm實時計算”“使用Spark實現(xiàn)實時計算”“使用Flink實現(xiàn)實時分析”以及“綜合應(yīng)用”。
在閱讀本書之前,讀者應(yīng)具備基本的Java和Scala編程基礎(chǔ),還應(yīng)熟悉Maven、Java和Eclipse的安裝和配置流程。
1.全書側(cè)重實用性,涵蓋從數(shù)據(jù)的采集、可視化到數(shù)據(jù)的持久化等各個方面的內(nèi)容,幫助讀者提升自主解決挑戰(zhàn)性問題的能力;
2.本書包括如何設(shè)置組件、基礎(chǔ)的Demo演示、系統(tǒng)集成、高級用例,以及報警和監(jiān)控等主題,旨在幫助讀者了解當今流行的實時處理工具,如Apache Spark、Apache Flink和Storm;
3.本書結(jié)合實際用例展示上述技術(shù)的具體應(yīng)用,真正將理論運用到實踐中,解決實際問題;
4.通過閱讀本書,讀者可以掌握實時數(shù)據(jù)處理和分析的相關(guān)知識,并能了解如何以最恰當?shù)姆绞皆谏a(chǎn)環(huán)境中部署解決方案。
希爾皮·薩克塞納(Shilpi Saxena)是IT領(lǐng)域的一位技術(shù)布道者。她曾涉足多個領(lǐng)域(機器對機器空間、醫(yī)療保健、電信、人才招聘和制造業(yè))。在企業(yè)解決方案的構(gòu)思和執(zhí)行的所有方面,以及在軟件行業(yè)的產(chǎn)品和服務(wù)方面有超過12年的經(jīng)驗。她一直在大數(shù)據(jù)領(lǐng)域從事設(shè)計、管理和提供解決方案,并領(lǐng)導(dǎo)著一支高水平和分布在各地的精英工程師團隊。
沙魯巴·古普塔(Saurabh Gupta)是一名軟件工程師,有數(shù)十年的IT行業(yè)從業(yè)經(jīng)驗,目前從事處理和設(shè)計在生產(chǎn)中運行的實時和批處理項目的相關(guān)工作,主要包括Impala、Storm、NiFi、Kafka等技術(shù)以及在AWS上部署Docker,他還參與了各種物聯(lián)網(wǎng)項目,涉及電信、醫(yī)療保健、智能城市、智能汽車等領(lǐng)域。
第 一部分 導(dǎo)言—熟悉實時分析
第 1章 實時分析簡介 2
1.1 大數(shù)據(jù)的定義 2
1.2 大數(shù)據(jù)的基礎(chǔ)設(shè)施 3
1.3 實時分析—神話與現(xiàn)實 6
1.4 近實時解決方案—可用的架構(gòu) 9
1.4.1 NRT的Storm解決方案 9
1.4.2 NRT的Spark解決方案 10
1.5 Lambda架構(gòu)—分析可能性 11
1.6 物聯(lián)網(wǎng)—想法與可能性 13
1.7 云—考慮NRT和物聯(lián)網(wǎng) 17
1.8 小結(jié) 18
第 2章 實時應(yīng)用的基本組件 19
2.1 NRT系統(tǒng)及其構(gòu)建模塊 19
2.1.1 數(shù)據(jù)采集 21
2.1.2 流處理 22
2.1.3 分析層—服務(wù)終端用戶 23
2.2 NRT的高級系統(tǒng)視圖 25
2.3 NRT的技術(shù)視圖 26
2.3.1 事件生產(chǎn)者 27
2.3.2 數(shù)據(jù)收集 27
2.3.3 代理 29
2.3.4 轉(zhuǎn)換和處理 31
2.3.5 存儲 32
2.4 小結(jié) 32
第二部分 搭建基礎(chǔ)設(shè)施
第3章 了解和跟蹤數(shù)據(jù)流 34
3.1 了解數(shù)據(jù)流 34
3.2 為數(shù)據(jù)提取安裝基礎(chǔ)設(shè)施 35
3.2.1 Apache Kafka 35
3.2.2 Apache NiFi 36
3.2.3 Logstash 41
3.2.4 Fluentd 43
3.2.5 Flume 46
3.3 將數(shù)據(jù)從源填到處理器—期望和注意事項 48
3.4 比較與選擇適合用例的最佳實踐 49
3.5 小試牛刀 49
3.6 小結(jié) 51
第4章 安裝和配置Storm 52
4.1 Storm概述 52
4.2 Storm架構(gòu)和組件 53
4.2.1 特征 54
4.2.2 組件 54
4.2.3 流分組 56
4.3 安裝和配置Storm 57
4.3.1 安裝Zookeeper 57
4.3.2 配置Apache Storm 59
4.4 在Storm上實時處理任務(wù) 61
4.5 小結(jié) 67
第5章 配置Apache Spark和Flink 68
5.1 安裝并快速運行Spark 68
5.1.1 源碼構(gòu)建 69
5.1.2 下載Spark安裝包 69
5.1.3 運行示例 70
5.2 安裝并快速運行Flink 73
5.2.1 使用源碼構(gòu)建Flink 73
5.2.2 下載Flink 74
5.2.3 運行示例 75
5.3 安裝并快速運行Apache Beam 79
5.3.1 Beam模型 79
5.3.2 運行示例 80
5.3.3 MinimalWordCount示例 82
5.4 Apache Beam中的平衡 85
5.5 小結(jié) 88
第三部分 Storm實時計算
第6章 集成Storm與數(shù)據(jù)源 90
6.1 RabbitMQ有效的消息傳遞 90
6.2 RabbitMQ交換器 91
6.2.1 直接交換器 91
6.2.2 RabbitMQ安裝配置 93
6.2.3 RabbitMQ的發(fā)布和訂閱 95
6.3 RabbitMQ與Storm集成 99
6.4 PubNub數(shù)據(jù)流發(fā)布者 107
6.5 將Storm和RMQ_PubNub傳感器數(shù)據(jù)拓撲串在一起 111
6.6 小結(jié) 114
第7章 從Storm到Sink 115
7.1 安裝并配置Cassandra 115
7.1.1 安裝Cassandra 116
7.1.2 配置Cassandra 117
7.2 Storm和Cassandra拓撲 118
7.3 Storm和IMDB集成處理維度數(shù)據(jù) 120
7.4 集成表示層與Storm 122
7.5 小試牛刀 134
7.6 小結(jié) 143
第8章 Storm Trident 144
8.1 狀態(tài)保持和Trident 144
8.1.1 事務(wù)性spout 145
8.1.2 不透明事務(wù)性spout 145
8.2 基本Storm Trident拓撲 146
8.3 Trident內(nèi)部實現(xiàn) 148
8.4 Trident操作 149
8.4.1 函數(shù) 149
8.4.2 Map函數(shù)and FlatMap函數(shù) 150
8.4.3 peek函數(shù) 151
8.4.4 過濾器 151
8.4.5 窗口操作 152
8.4.6 聚合操作 155
8.4.7 分組操作 158
8.4.8 合并和組合操作 159
8.5 DRPC 160
8.6 小試牛刀 161
8.7 小結(jié) 164
第四部分 使用Spark實現(xiàn)實時計算
第9章 運用Spark引擎 166
9.1 Spark概述 166
9.2 Spark的獨特優(yōu)勢 169
9.3 Spark用例 172
9.4 Spark架構(gòu)—引擎內(nèi)部的運行模式 174
9.5 Spark的語用概念 176
9.6 Spark 2.x—數(shù)據(jù)框和數(shù)據(jù)集的出現(xiàn) 178
9.7 小結(jié) 179
第 10章 運用Spark操作 180
10.1 Spark—封裝和API 180
10.2 RDD語用探索 182
10.2.1 轉(zhuǎn)換 185
10.2.2 動作 190
10.3 共享變量—廣播變量和累加器 192
10.3.1 廣播變量 192
10.3.2 累加器 195
10.4 小結(jié) 196
第 11章 Spark Streaming 197
11.1 Spark Streaming的概念 197
11.2 Spark Streaming的簡介和體系結(jié)構(gòu) 198
11.3 Spark Streaming的封裝結(jié)構(gòu) 203
11.3.1 Spark Streaming API 203
11.3.2 Spark Streaming操作 204
11.4 連接Kafka和Spark Streaming 206
11.5 小結(jié) 208
第五部分 使用Flink實現(xiàn)實時分析
第 12章 運用Apache Flink 210
12.1 Flink體系結(jié)構(gòu)和執(zhí)行引擎 210
12.2 Flink的基本組件和進程 213
12.3 將源流集成到Flink 215
12.3.1 和Apache Kafka集成 215
12.3.2 和RabbitMQ集成 218
12.4 Flink處理和計算 221
12.4.1 Datastream API 221
12.4.2 DataSet API 223
12.5 Flink持久化 224
12.6 FlinkCEP 226
12.7 Pattern API 227
12.7.1 檢測模式 227
12.7.2 模式選擇 228
12.7.3 示例 228
12.8 Gelly 229
12.9 小試牛刀 231
12.10 小結(jié) 242
第六部分 綜合應(yīng)用
第 13章 用例研究 244
13.1 概述 244
13.2 數(shù)據(jù)建!245
13.3 工具和框架 246
13.4 建立基礎(chǔ)設(shè)施 247
13.5 實現(xiàn)用例 252
13.5.1 構(gòu)建數(shù)據(jù)模擬器 252
13.5.2 Hazelcast加載器 259
13.5.3 構(gòu)建Storm拓撲 261
13.6 運行用例 272
13.7 小結(jié) 279