基於Apache Spark的流處理基於Apache Spark的流處理

基於Apache Spark的流處理基於Apache Spark的流處理

《基於Apache Spark的流處理基於Apache Spark的流處理》是2021年中國電力出版社出版的圖書,作者是傑拉德·馬斯,弗朗索瓦·加里洛,本書通過具體實例來研究Structured Streaming、深入理解流處理概念。

基本介紹

  • 中文名:基於Apache Spark的流處理基於Apache Spark的流處理 
  • 作者:[美]傑拉德·馬斯(Gerard,Maas)、[美]弗朗索瓦·加里洛(Fran,ois,Garillot)
  • 出版社:中國電力出版社
  • ISBN:9787519852948
內容簡介,圖書目錄,作者簡介,

內容簡介

學習流處理的基本概念、研究各種流處理架構。通過具體實例來研究Structured Streaming、深入理解流處理概念。通過Spark Streaming創建並管理流作業,使用其他Spark API與Spark Streaming集成。學習Spark Streaming高級技巧,包括近似算法和機器學習算法。將Apache Spark與其他流處理項目比較,包括Apache Storm、Apache Flink和Apache Kafka Streams。

圖書目錄

序 1
前言 3
部分 Apache Spark 流處理的基本原理
第1 章 流處理概述 13
什麼是流處理 14
批處理與流處理 15
流處理中的時間概念 15
不確定性因素 16
流處理案例 16
可擴展的數據處理能力 18
擴展性與容錯性 19
分散式流處理 19
Apache Spark 概述 20
波浪潮:函式式API 20
第二波浪潮:SQL 21
統一的引擎21
Spark 組件 22
Spark Streaming 23
Structured Streaming 23
接下來? 24
第2 章 流處理模型 25
數據源與接收器 26
不可變流 27
轉換與聚合 27
視窗聚合 28
滾動視窗 28
滑動視窗 29
無狀態處理與有狀態處理 29
有狀態的流 30
案例:Scala 中的本地狀態計算 31
無狀態流,還是有狀態流? 33
時間效應 33
帶時間戳的事件計算 33
通過時間戳來定義時間概念 34
事件時間與處理時間 34
使用水位線計算 37
小結 39
第3 章 流處理架構 41
數據平台的組件 41
體系模型 43
在流處理套用中使用批處理組件 44
流處理架構參考 45
Lambda 架構 45
Kappa 架構 46
流處理算法與批處理算法 47
流處理算法有時候本質上與批處理算法完全不同 47
流處理算法難以保證比批處理算法表現更好 48
小結 50
第4 章 流處理引擎Apache Spark 51
兩種API 的由來 51
Spark 的記憶體使用 52
故障恢復 53
惰性執行 53
快取使用建議 53
延遲 54
面向吞吐的數據處理 55
Spark 的多語言API 55
快速實現數據分析 56
更多關於Spark 的內容 57
小結 57
第5 章 Spark 分散式處理模型 59
通過集群管理器來運行Apache Spark 59
Spark 的集群管理器 61
分散式系統的彈性與容錯 62
故障恢復 63
集群管理器對容錯的支持 63
數據交付語義 64
微批處理與一次處理一個 66
微批處理:整體同步處理套用案例 66
一次處理一個 68
微批與一次處理一個:權衡 68
微批處理與一次處理一個方式地結合 69
動態的批次間隔 69
Structured Streaming 處理模型 69
第6 章 Spark 彈性模型 71
Spark 中的彈性分散式數據集 71
Spark 組件 73
Spark 容錯保證 75
Task 失敗恢復 76
stage 失敗恢復 77
Driver 失敗恢復 77
小結 78
參考文獻 81
第二部分 Structured Streaming
第7 章 Structured Streaming 概述 87
學習Structured Streaming 之前 88
批處理分析 89
流分析 92
連線Stream 93
準備流數據93
流式Dataset 操作 94
創建查詢(Query) 95
啟動流處理96
瀏覽數據 97
小結 97
第8 章 Structured Streaming 編程模型 99
初始化Spark 實例 100
source:接收流數據 100
流數據的轉換 102
sink:輸出結果數據 105
format 106
outputMode 107
queryName 107
option 108
options 108
trigger 108
start() 109
小結 109
第9 章 Structured Streaming 實戰 111
消費流source 112
程式邏輯 114
寫入流sink 114
小結 116
第10 章 Structured Streaming 的Source 117
source 概述 117
可靠的source 需要能夠重放數據 118
source 需要提供schema 119
可用的source 121
檔案source 122
指定檔案格式 122
公共配置 123
常用的文本解析配置項(CSV、JSON) 124
JSON 檔案source 125
CSV 檔案source127
Parquet 檔案source 128
文本檔案source 128
Kafka source 129
創建Kafka source 130
選擇訂閱主題的方法 131
Kafka source 的配置項 132
Kafka 消費者的配置項 133
Socket source 134
配置 135
操作 136
Rate source 136
第11 章 Structured Streaming 的Sink 139
sink 概述 139
可用的sink 140
可靠的sink 140
實驗型sink 141
sink API 141
深入學習sink 141
檔案sink 142
在檔案sink 中使用觸發器 143
檔案格式的通用配置項 145
常見的時間和日期格式化設定(CSV、JSON) 146
CSV 檔案sink 146
JSON 檔案sink 147
Parquet 檔案sink 148
文本檔案sink 148
Kafka sink 148
Kafka 發布模型 148
Kafka sink 的使用 149
記憶體sink 152
控制台sink 153
配置項 153
輸出模式 153
Foreach sink 154
ForeachWriter 接口 154
TCP Writer sink: ForeachWriter 使用案例 155
案例總結 158
ForeachWriter 序列化問題排查 159
第12 章 基於事件時間的流處理 161
Structured Streaming 中的事件時間 161
事件時間 163
處理時間 164
水位線 164
基於時間的視窗聚合 165
基於時間的視窗定義 166
如何計算間隔 167
多維聚合 167
滾動視窗和滑動視窗 168
記錄去重 170
小結 170
第13 章 高級狀態操作 173
案例:車隊管理 174
分組狀態操作 174
使用MapGroupsWithState 176
使用FlatMapGroupsWithState 180
輸出模式 182
管理狀態的時變性 183
小結 186
第14 章 Structured Streaming 套用監控 187
Spark 指標子系統 188
StreamingQuery 實例 189
StreamingQueryListener 接口 192
第15 章 實驗性模組:連續處理與機器學習 195
連續處理 195
連續處理介紹 195
使用連續處理 197
局限性 198
機器學習 199
學習與套用199
在流中使用機器學習模型 200
案例:利用環境感測器估計房間使用情況 201
線上訓練 204
參考文獻 207
第三部分 Spark Streaming
第16 章 Spark Streaming 概述 213
DStream 抽象 214
基於DStream 的編程模型 214
基於DStream 的執行模型 216
Spark Streaming 程式結構 216
創建Spark Streaming Context 217
定義DStream 218
定義輸出操作 218
啟動Spark Streaming Context 218
停止Streaming 進程 219
小結 219
第17 章 Spark Streaming 編程模型 221
RDD,DStream 的底層抽象 221
DStream 轉換操作 224
元素級別的DStream 轉換 226
RDD 級別的DStream 轉換228
Count 操作 229
修改結構的轉換操作 230
小結 231
第18 章 Spark Streaming 執行模型 233
整體同步架構 233
Receiver 模型 235
Receiver API 235
Receiver 工作流程 236
Receiver 數據流 237
內部的數據彈性 238
Receiver 的並行 239
資源平衡:Receiver 與處理核數 239
通過預寫式日誌(Write-Ahead Log)達到零數據丟失 240
無Receiver(Direct)模式 241
小結 242
第19 章 Spark Streaming 的Source 245
source 分類 245
基礎source 246
基於Receiver 模式的source 246
基於Direct 模式的source 247
常用source 247
檔案source 248
佇列source 251
工作流程 252
使用佇列source 進行單元測試 252
佇列source 的簡單替代方案:ConstantInputDStream 254
Socket source 256
Kafka source 258
使用Kafka source 260
工作流程 261
哪裡有更多的source 262
第20 章 Spark Streaming 的Sink 263
輸出操作 263
內置的輸出操作 265
print 266
saveAs 系列 266
foreachRDD 268
使用foreachRDD 編寫自定義sink 268
第三方輸出操作 271
第21 章 基於時間的流處理 273
視窗聚合 273
滾動視窗 274
滑動視窗 275
滑動視窗與批次間隔 275
滑動視窗與滾動視窗 276
使用視窗還是較長的批次間隔 276
視窗上的reduce 操作 277
reduceByWindow 278
reduceByKeyAndWindow 278
countByWindow 278
countByValueAndWindow 279
可逆的視窗聚合操作 279
流的分片 281
小結 281
第22 章 任意有狀態的流處理 283
流的狀態性 283
updateStateByKey 284
updateStateByKey 的局限性 286
性能 286
記憶體占用 287
使用mapwithState 進行有狀態的計算 287
使用mapWithState 289
使用mapWithState 進行基於事件時間的流計算 291
第23 章 使用Spark SQL 295
Spark SQL 296
在Spark Streaming 中使用Spark SQL 函式 297
靜態數據處理 301
Join 最佳化 304
更新流處理程式中的參考數據集 307
小結 309
第24 章 checkpoint 機制 311
checkpoint 的使用 312
DStream 的checkpoint 機制 317
從checkpoint 中恢復 318
checkpoint 的代價 320
checkpoint 調優 320
第25 章 Spark Streaming 套用監控 323
Streaming UI 324
通過Streaming UI 了解作業性能 326
輸入速率圖326
調度延遲圖327
處理時間圖328
總延遲圖 328
批次細節 329
監控REST API 331
監控REST API 的使用 331
監控REST API 詳解 331
指標子系統 333
內部事件匯流排 335
小結 339
第26 章 性能調優 341
Spark Streaming 中的性能平衡 341
批次間隔與處理延遲的關係 342
作業是如何失敗的 342
深入理解調度延遲和處理延遲 343
checkpoint 對處理時間的影響 344
影響作業性能的外部因素 345
如何提高性能 345
調整批次間隔 346
以固定速率對數據攝入限流 346
反壓 347
動態限流 348
PID 反壓調優 349
自定義速率估算器 349
另一種動態處理策略 350
快取 350
推測執行 352
參考文獻 353
第四部分 Spark Streaming 高級技巧
第27 章 流式近似與抽樣算法 357
準確性、實時性與大數據 358
準確性 358
實時處理 358
大數據 359
準確性、實時性與大數據之間的三角關係 359
近似算法 362
哈希與素描 362
去重統計:HyperLogLog 363
角色扮演練習:假如我們是系統管理員 364
HyperLogLog 在Spark 中的實踐 367
統計元素頻率:Count-min Sketch 371
布隆過濾器概述 372
在Spark 中使用布隆過濾器 373
使用Count-min Sketch 統計頻率 373
排名與分位數:T-Digest 算法 376
減少元素數量:抽樣 378
隨機抽樣 379
分層抽樣 380
第28 章 實時機器學習 381
利用樸素貝葉斯進行流分類 382
streamDM 介紹384
樸素貝葉斯實踐案例 385
訓練一個電影評論分類器 386
決策樹介紹 387
Hoeffding 樹 389
使用線上K-means 進行流聚類 392
K-means 聚類 392
線上數據與線上K-means 算法 393
聚類的衰退問題 394
使用Spark Streaming 運行流式K-means 396
參考文獻 399
第五部分 Apache Spark 之外的世界
第29 章 其他分散式實時流處理系統 405
Apache Storm 405
編程模型 406
Storm 拓撲 406
Storm 集群 407
與Spark 相比 407
Apache Flink 408
流處理優先的框架 408
與Spark 相比 409
Kafka Streams 409
Kafka Streams 編程模型 410
與Spark 相比 410
雲上的流處理系統 411
AWS 上的Amazon Kinesis 411
微軟的Azure Stream Analytics 412
Apache Beam 和Google Cloud Dataflow 413
第30 章 展望 417
緊隨Spark 項目 418
在Stack Overflow 上尋求幫助 418
在郵件列表中進行討論 418
參加會議 419
參加交流會 419
貢獻Apache Spark 項目 419
參考文獻 421
作者介紹 423
封面介紹 423

作者簡介

Gerard Mass是Lightbend的首席工程師,致力於將Structured Streaming與流處理擴展技術無縫集成到Lightbend平台中。
François Garillot在Facebook從事於分散式計算相關工作。曾在Lightbend從事Spark Streaming反壓機制研究,同時擁有巴黎綜合理工學院的博士學位。

相關詞條

熱門詞條

聯絡我們