基於Apache Flink的流處理
作 者: (美)比安·霍斯克(Fabian Hueske),(美)瓦西裡基·卡拉夫裡(Vasiliki Kalavri) 著 崔星燦 譯
定 價: 88
出?版?社: 中國電力出版社
出版日期: 2017年12月01日
頁 數: 344
裝 幀: 平裝
ISBN: 9787519840112
●前言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章ApacheFlink架構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章設置ApacheFlink開發環境83
所需軟件83
在IDE中運行和調試Flink程序84
在IDE中導入書中示例84
在IDE中運行Flink程序87
在IDE中調試Flink程序88
創建FlinkMaven項目89
小結90
第5章DataStreamAPI(17版本)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
CoProcessFunction140
窗口算子141
定義窗口算子142
內置窗口分配器143
在窗口上應用函數148
自定義窗口算子155
基於時間的雙流Join167
基於間隔的Join167
基於窗口的Join168
處理遲到數據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
ApacheKafka數據源連接器214
ApacheKafka數據彙連接器218
文件繫統數據源連接器222
文件繫統數據彙連接器224
ApacheCassandra數據彙連接器228
實現自定義數據源函數232
可重置的數據源函數233
數據源函數、時間戳及水位線235
實現自定義數據彙函數236
冪等性數據彙連接器238
事務性數據彙連接器239
異步訪問外部繫統248
小結251
第9章搭建Flink運行流式應用253
部署模式253
獨立集群254
Docker256
ApacheHadoopYARN258
Kubernetes261
高可用性設置266
獨立集群的HA設置267
YARN上的HA設置268
Kubernetes的HA設置270
集成Hadoop組件270
文件繫統配置272
繫統配置274
Java和類加載275
CPU275
內存和網絡緩衝276
磁盤存儲278
檢查點和狀態後端279
安全性280
小結281
0章Flink和流式應用運維283
運行並管理流式應用283
保存點284
通過命令行客戶端管理應用285
通過RESTAPI管理應用292
在容器中打包並部署應用298
控制任務調度302
控制任務鏈接302
定義處理槽共享組303
調整檢查點及恢復305
配置檢查點306
配置狀態後端309
配置故障恢復311
監控Flink集群和應用313
FlinkWebUI313
指標繫統316
延遲監控322
配置日志行為323
小結324
1章還有什麼?325
Flink生態的其他組成部分325
用於批處理的DataSetAPI325
用於關繫型分析的TableAPI及SQL326
用於復雜事件處理和模式匹配的FlinkCEP326
用於圖計算的Gelly327
歡迎加入社區327
內容簡介
Apache Flink項目的資深貢獻者Fabian Hueske和Vasiliki Kalavri展示了如何使用Flink DataStream API實現可伸縮的流式應用,以及怎樣在業務環境中持續運行和維護這些應用。流處理的理想應用場景有很多,包括低延遲ETL、流式分析、實時儀表盤以及欺詐檢測、異常檢測和報警。你可以在任意類型的持續數據(包括用戶交互、金融交易和物聯網等數據)生成後,立即對它們進行處理。了解有關分布式狀態化流處理的概念和挑戰。探索Flink的繫統架構,包括事件時間處理模式和容錯模型。理解DataStream API的基礎知識和構成要素,包括基於時間和有狀態的算子。以準確一次的一致性讀寫外部繫統。部署和配置Flink集群。對持續運行的流式應用進行運維。
前言你能從本書學到什麼本書將教給你基於Apache Flink 進行流處理的一切知識。它總共包含了11 章,我們希望通過這些章節講述一個完整的故事。書中部分章節會側重描述高層次的設計理念,而其餘章節會更加注重實踐並包含了很多示例代碼。盡管我們在寫書的時候是按照預期閱讀順序進行的章節編排,但如果你已經對某些章節的內容很熟悉,仍可以選擇跳過。若是你迫不及待地想開始編寫Flink 代碼,也可以先閱讀實踐章節。接下來我們會簡要介紹一下每個章節的內容,便於你直接跳到最感興趣的部分。? 第 1 章是概述。我們在其中概括了狀態化流處理、數據處理應用的架構和設計,以及流處理與傳統方法相比的優勢所在。此外,還簡要介紹了如何在本地Flink 實例上運行你的個流式應用。? 第 2 章主要討論流處理的基本概念和挑戰。這些內容均是獨立於 Flink 而存在的。? 第 3 章重點描述 Flink 的繫統架構和內部實現......
"