基於 Apache Flink 的流處理 (Stream Processing with Apache Flink: Fundamentals, Implementation, and Operation of Streaming Applications)

Fabian Hueske,Vasiliki Kalavri

買這商品的人也買了...

相關主題

商品描述

Apache Flink項目的資深貢獻者Fabian Hueske和Vasiliki Kalavri
展示瞭如何使用Flink DataStream API實現可伸縮的流式應用,
以及怎樣在業務環境中持續運行和維護這些應用。
流處理的理想應用場景有很多,包括低延遲ETL、流式分析、
實時儀錶盤以及欺詐檢測、異常檢測和報警。
你可以在任意類型的持續數據(包括用戶交互、金融交易和物聯網等數據)生成後,立即對它們進行處理。
了解有關分佈式狀態化流處理的概念和挑戰。
探索Flink的系統架構,包括事件時間處理模式和容錯模型。
理解DataStream API的基礎知識和構成要素,包括基於時間和有狀態的算子。
以精確一次的一致性讀寫外部系統。
部署和配置Flink集群。對持續運行的流式應用進行運維。

作者簡介

Fabian Hueske

是Apache Flink項目的PMC成員,他從Flink項目創始之初就開始參與貢獻。
Fabian是data Artisans(現在的Ververica)公司的創始人之一,
擁有柏林工業大學的計算機科學博士學位。

Vasiliki Kalavri

是蘇黎世聯邦理工學院系統組的博士後研究員。
她同樣也是Apache Flink項目的PMC成員。
作為Flink早期貢獻者,Vasiliki參與了圖計算庫Gelly以及初期版本的Table API和流式SQL的建設工作。

崔星燦

加拿大約克大學博士後,分佈式流處理技術和開源愛好者,Apache Flink Committer。

目錄大綱

目錄
前言.1
第1章狀態化流處理概述.7
傳統數據處理架構.8
事務型處理8
分析型處理.9
狀態化流處理11
事件驅動型應用.13
數據管道14
流式分析15
開源流處理的演變.16
歷史回顧17
Flink快覽18
運行首個Flink應用.20
小結.23
第2章流處理基礎. 25
Dataflow編程概述25
Dataflow圖25
數據並行和任務並行26
數據交換策略.27
並行流處理28
延遲和吞吐.28
數據流上的操作.31
時間語義.36
流處理場景下一分鐘的含義37
處理時間38
事件時間39
水位線40
處理時間與事件時間41
狀態和一致性模型.41
任務故障43
結果保障44
小結.46
第3章Apache Flink架構. 47
系統架構.47
搭建Flink所需組件.48
應用部署50
任務執行51
高可用性設置.52
Flink中的數據傳輸.54
基於信用值的流量控制56
任務鏈接57
事件時間處理58
時間戳59
水位線59
水位線傳播和事件時間61
時間戳分配和水位線生成63
狀態管理.64
算子狀態65
鍵值分區狀態.66
狀態後端68
有狀態算子的擴縮容68
檢查點、保存點及狀態恢復71
一致性檢查點.71
從一致性檢查點中恢復72
Flink檢查點算法.74
檢查點對性能的影響79
保存點79
小結.82
第4章設置Apache Flink開發環境83
所需軟件.83
在IDE中運行和調試Flink程序.84
在IDE中導入書中示例.84
在IDE中運行Flink程序.87
在IDE中調試Flink程序88
創建Flink Maven項目89
小結.90
第5章DataStream API (1.7版本) . 91
Hello, Flink! 91
設置執行環境.93
讀取輸入流.94
應用轉換94
輸出結果95
執行96
轉換操作.96
基本轉換97
基於KeyedStream的轉換100
多流轉換104
分發轉換108
設置並行度111
類型. 112
支持的數據類型. 113
為數據類型創建類型信息116
顯式提供類型信息. 117
定義鍵值和引用字段. 118
字段位置118
字段表達式. 119
鍵值選擇器.120
實現函數.121
函數類121
Lambda函數122
富函數123
導入外部和Flink依賴124
小結.125
第6章基於時間和窗口的算子127
配置時間特性127
分配時間戳和生成水位線129
水位線、延遲及完整性問題133
處理函數.134
時間服務和計時器.136
向副輸出發送數據.138
CoProcessFunction .140
窗口算子.141
定義窗口算子.142
內置窗口分配器.143
在窗口上應用函數.148
自定義窗口算子.155
基於時間的雙流Join .167
基於間隔的Join .167
基於窗口的Join .168
處理遲到數據170
丟棄遲到事件.170
重定向遲到事件.171
基於遲到事件更新結果172
小結.174
第7章有狀態算子和應用. 175
實現有狀態函數176
在RuntimeContext中聲明鍵值分區狀態.176
通過ListCheckpointed接口實現算子列表狀態.180
使用CheckpointedFunction接口.187
接收檢查點完成通知189
為有狀態的應用開啟故障恢復190
確保有狀態應用的可維護性190
指定算子唯一標識.191
為使用鍵值分區狀態的算子定義最大並行度192
有狀態應用的性能及魯棒性192
選擇狀態後端.193
選擇狀態原語.194
防止狀態洩露.195
更新有狀態應用198
保持現有狀態更新應用199
從應用中刪除狀態.200
修改算子的狀態.200
可查詢式狀態.202
可查詢式狀態服務的架構及啟用方式203
對外暴露可查詢式狀態204
從外部系統查詢狀態205
小結.207
第8章讀寫外部系統209
應用的一致性保障.210
冪等性寫211
事務性寫211
內置連接器213
Apache Kafka數據源連接器214
Apache Kafka數據匯連接器218
文件系統數據源連接器222
文件系統數據匯連接器224
Apache Cassandra數據匯連接器.228
實現自定義數據源函數.232
可重置的數據源函數233
數據源函數、時間戳及水位線.235
實現自定義數據彙函數.236
冪等性數據匯連接器238
事務性數據匯連接器239
異步訪問外部系統.248
小結.251
第9章搭建Flink運行流式應用253
部署模式.253
獨立集群254
Docker 256
Apache Hadoop YARN .258
Kubernetes 261
高可用性設置266
獨立集群的HA設置267
YARN上的HA設置268
Kubernetes的HA設置270
集成Hadoop組件270
文件系統配置272
系統配置.274
Java和類加載.275
CPU 275
內存和網絡緩衝.276
磁盤存儲278
檢查點和狀態後端.279
安全性280
小結.281
第10章Flink和流式應用運維283
運行並管理流式應用.283
保存點284
通過命令行客戶端管理應用285
通過REST API管理應用.292
在容器中打包並部署應用298
控制任務調度302
控制任務鏈接.302
定義處理槽共享組.303
調整檢查點及恢復.305
配置檢查點.306
配置狀態後端.309
配置故障恢復. 311
監控Flink集群和應用313
Flink Web UI 313
指標系統316
延遲監控322
配置日誌行為323
小結.324
第11章還有什麼?325
Flink生態的其他組成部分325
用於批處理的DataSet API .325
用於關係型分析的Table API及SQL 326
用於復雜事件處理和模式匹配的FlinkCEP .326
用於圖計算的Gelly .327
歡迎加入社區327