基於Apache Spark的流處理

[美]杰拉德·馬斯(Gerard Maas),[美]弗朗索瓦·加里洛(Franois Garillot)

  • 出版商: 中國電力
  • 出版日期: 2021-03-01
  • 定價: $768
  • 售價: 6.7$516
  • 語言: 簡體中文
  • 頁數: 444
  • 裝訂: 平裝
  • ISBN: 7519852946
  • ISBN-13: 9787519852948
  • 相關分類: Spark
  • 立即出貨(限量) (庫存=2)

商品描述

學習流處理的基本概念、研究各種流處理架構。

通過具體實例來研究Structured Streaming、深入理解流處理概念。

通過Spark Streaming創建並管理流作業,使用其他Spark API與Spark Streaming集成。

學習Spark Streaming高級技巧,包括近似算法和機器學習算法。

將Apache Spark與其他流處理項目比較,包括Apache Storm、Apache Flink和Apache Kafka Streams。

作者簡介

Gerard Mass是Lightbend的首席工程師,致力於將Structured Streaming與流處理擴展技術無縫集成到Lightbend平台中。


Fran?ois Garillot在Facebook從事於分佈式計算相關工作。曾在Lightbend從事Spark Streaming反壓機制研究,同時擁有巴黎綜合理工學院的博士學位。

目錄大綱

序 1
前言 3
部分 Apache Spark 流處理的基本原理
章 流處理概述 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
outputM*de *07
queryName 107
option 108
options 108
trigger 108
start() 109
小結 109
第9章 Structured Streaming 實戰 111
消費流source 112
程序邏輯 114
寫入流sink 114
小結 116
0章 Structured Streaming的Source 117
source概述 117
可靠的source需要能夠重放數據 118
source需要提供schema 119
可用的source 121
文件source 122
指定文件格式 122
公共配置 123
常用的文本解析配置項(CSV、JSON) 124
JSON文件source 125
CSV文件s*urce*27
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
1章 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
2章 基於事件時間的流處理 161
Structured Streaming中的事件時間 161
事件時間 163
處理時間 164 <*r> *位線 164
基於時間的窗口聚合 165
基於時間的窗口定義 166
如何計算間隔 167
多維聚合 167
滾動窗口和滑動窗口 168
記錄去重 170
小結 170
3章 不錯狀態操作 173
案例:車隊管理 174
分組狀態操作 174
使用MapGroupsWithState 176
使用FlatMapGroupsWithState 180
輸出模式 182
管理狀態的時變* 1*3
小結 186
4章 Structured Streaming 應用監控 187
Spark 指標子系統 188
StreamingQuery 實例 189
StreamingQueryListener 接口 192
5章 實驗*模塊:連續處理與機器學習 195
連續處理 195
連續處理介紹 195
使用連續處理 197
局限* 19*
機器學習 199
學習與應用199
在流中使用機器學習模型 200
案例:利用環境傳感器估計房間使用情況 201
在線訓練 204
參考文獻 207
第三部分 Spark Streaming
6章 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
7章 Spark Streaming編程模型 221
RDD,DStream的底層抽象 221
DStream轉換操作 224
元素級別的DStream轉換 226
RDD 級別的DStream轉換228
Count操作 229
修改結構的轉換操作 230
小結 231
8章 Spark Streaming執行模型 233
整體同步架構 233
Receiver 模型 235
Receiver API 235
Receiver 工作流程 236
Receiver 數據流 237
內部的數據彈* 23*
Receiver 的並行 239
*源平衡*Receiver 與處理核數 239
通過預寫式日誌(Write-Ahead Log)達到零數據丟失 240
無Receiver(Direct)模式 241
小結 242
9章 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
*2*章 基於時間的流處理 273
窗口聚合 273
滾動窗口 274
滑動窗口 275
滑動窗口與批次間隔 275
滑動窗口與滾動窗口 276
使用窗口還是較長的批次間隔 276
窗口上的reduce 操作 277
reduceByWindow 278
reduceByKeyAndWindow 278
countByWindow 278
countByValueAndWindow 279
可逆的窗口聚合操作 279
流的分片 281
小結 281
第22章 任意有狀態的流處理 283
流的狀態* 2*3
updateStateByKey 284
updateStateByKey 的局限* 2*6
*能 2*6
內存佔用 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
準確* 35*
實時處理 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上的****** Kinesis 411
微軟的Azure Stream Analytics 412
Apache Beam 和Google Cloud Datafl*w 4*3
第30章 展望 417
緊隨Spark 項目 418
在Stack Overflow上尋求幫* 418
在郵件列表中進行討論 418
參加會議 419
參加交流會 419
貢獻Apache Spark 項目 419
參考文獻 421
作者介紹 423
封面介紹 423