《劍指大數據——Flink學習精要(Java版)》是2022年2月電子工業出版社出版的圖書,作者是尚矽谷教育。
基本介紹
內容簡介,圖書目錄,
內容簡介
本書基於Flink的穩定版本1.13,從Flink數據處理思想開始講解,帶領讀者深入理解Flink的基本架構,進而由淺入深,結合具體案例,詳細剖析了Flink中DataStream API的使用,並對Flink中的時間語義、狀態、容錯機制等重要概念進行了詳盡的闡述。
另外,本書還對實際開發中常用的Flink SQL、CEP等高層級API進行了細緻的講解,以電商網站中的實際套用為場景,提供了大量的代碼實現。
本書分為三大部分:
第1~5章,帶領讀者初步認識Flink並編寫基本的Flink程式;
第6~10章,深入探討了Flink內部的高級套用;
第11~12章,講解了Flink提供的擴展功能。
本書廣泛適用於大數據的學習者與從業人員,以及院校大數據相關專業的學生,也可作為大數據學習的參考書。
圖書目錄
第1章 初識Flink 1
1.1 Flink的起源和設計理念 1
1.2 Flink的套用 3
1.2.1 Flink在企業中的套用 3
1.2.2 Flink主要的套用場景 3
1.3 流式數據處理的發展和演變 4
1.3.1 流處理和批處理 5
1.3.2 傳統事務處理 6
1.3.3 有狀態的流處理 6
1.3.4 Lambda架構 9
1.3.5 新一代流處理器 10
1.4 Flink的特性總結 10
1.4.1 Flink的核心特性 10
1.4.2 分層API 10
1.5 Flink與Spark 11
1.5.1 數據處理架構 12
1.5.2 數據模型和運行架構 13
1.5.3 Spark還是Flink 13
1.6 本章總結 14
第2章 Flink快速上手 15
2.1 環境準備 15
2.2 創建項目 15
2.3 編寫代碼 18
2.3.1 批處理 18
2.3.2 流處理 20
2.4 本章總結 23
第3章 Flink部署 25
3.1 快速啟動一個Flink集群 26
3.1.1 環境配置 26
3.1.2 本地啟動 26
3.1.3 集群啟動 27
3.1.4 向集群提交作業 29
3.2 部署模式 32
3.2.1 會話模式 33
3.2.2 單作業模式 33
3.2.3 套用模式 34
3.3 獨立模式 34
3.3.1 會話模式部署 35
3.3.2 單作業模式部署 35
3.3.3 套用模式部署 35
3.3.4 高可用 35
3.4 YARN模式 37
3.4.1 相關準備和配置 37
3.4.2 會話模式部署 38
3.4.3 單作業模式部署 39
3.4.4 套用模式部署 40
3.4.5 高可用 40
3.5 K8s模式 41
3.6 本章總結 41
第4章 Flink運行時架構 42
4.1 系統架構 42
4.1.1 整體構成 42
4.1.2 JobManager 43
4.1.3 TaskManager 44
4.2 作業提交流程 45
4.2.1 高層級抽象視角 45
4.2.2 獨立模式 45
4.2.3 YARN集群 46
4.3 一些重要概念 48
4.3.1 數據流圖 48
4.3.2 並行度 49
4.3.3 運算元鏈 51
4.3.4 作業圖與執行圖 53
4.3.5 任務和任務槽 55
4.4 本章總結 60
第5章 DataStream API(基礎篇) 61
5.1 執行環境 61
5.1.1 創建執行環境 62
5.1.2 執行模式 62
5.1.3 觸發程式執行 64
5.2 源運算元 64
5.2.1 準備工作 64
5.2.2 從集合中讀取數據 65
5.2.3 從檔案中讀取數據 66
5.2.4 從Socket中讀取數據 67
5.2.5 從Kafka中讀取數據 67
5.2.6 自定義源運算元 69
5.2.7 Flink支持的數據類型 71
5.3 轉換運算元 73
5.3.1 基本轉換運算元 73
5.3.2 聚合運算元 76
5.3.3 用戶自定義函式 81
5.3.4 物理分區運算元 87
5.4 輸出運算元 93
5.4.1 連線到外部系統 93
5.4.2 輸出到檔案 94
5.4.3 輸出到Kafka 96
5.4.4 輸出到Redis 97
5.4.5 輸出到ElasticSearch 99
5.4.6 輸出到MySQL(JDBC) 101
5.4.7 自定義Sink輸出 102
5.5 本章總結 104
第6章 Flink中的時間和視窗 105
6.1 時間語義 105
6.1.1 Flink中的時間語義 105
6.1.2 哪種時間語義更重要 107
6.2 水位線 108
6.2.1 事件時間和視窗 108
6.2.2 什麼是水位線 110
6.2.3 如何生成水位線 114
6.2.4 水位線的傳遞 120
6.2.5 水位線的總結 121
6.3 視窗 122
6.3.1 視窗的概念 122
6.3.2 視窗的分類 124
6.3.3 視窗API概覽 128
6.3.4 視窗分配器 129
6.3.5 視窗函式 131
6.3.6 測試水位線和視窗的使用 142
6.3.7 其他API 144
6.3.8 視窗的生命周期 148
6.4 遲到數據的處理 150
6.4.1 設定水位線延遲時間 150
6.4.2 允許視窗處理遲到數據 150
6.4.3 將遲到數據放入視窗側輸出流 151
6.5 本章總結 154
第7章 處理函式 155
7.1 基本處理函式 155
7.1.1 處理函式的功能和使用 155
7.1.2 ProcessFunction解析 157
7.1.3 處理函式的分類 158
7.2 KeyedProcessFunction 159
7.2.1 定時器和定時服務 159
7.2.2 KeyedProcessFunction的使用 160
7.3 視窗處理函式 164
7.3.1 視窗處理函式的使用 164
7.3.2 ProcessWindowFunction解析 164
7.4 套用案例——Top N 166
7.4.1 使用ProcessAllWindowFunction 166
7.4.2 使用KeyedProcessFunction 168
7.5 側輸出流 173
7.6 本章總結 174
第8章 多流轉換 175
8.1 分流 175
8.1.1 簡單實現 175
8.1.2 使用側輸出流 177
8.2 基本合流操作 178
8.2.1 聯合 178
8.2.2 連線 182
8.3 基於時間的合流——雙流聯結 188
8.3.1 視窗聯結 188
8.3.2 間隔聯結 192
8.3.3 視窗同組聯結 195
8.4 本章總結 197
第9章 狀態編程 198
9.1 Flink中的狀態 198
9.1.1 有狀態運算元 198
9.1.2 狀態的管理 199
9.1.3 狀態的分類 200
9.2 按鍵分區狀態 201
9.2.1 基本概念和特點 201
9.2.2 支持的結構類型 202
9.2.3 代碼實現 204
9.2.4 狀態生存時間 213
9.3 運算元狀態 214
9.3.1 基本概念和特點 214
9.3.2 狀態類型 215
9.3.3 代碼實現 216
9.4 廣播狀態 219
9.4.1 基本用法 219
9.4.2 代碼實例 220
9.5 狀態持久化和狀態後端 223
9.5.1 檢查點 223
9.5.2 狀態後端 224
9.6 本章總結 226
第10章 容錯機制 227
10.1 檢查點 227
10.1.1 檢查點的保存 228
10.1.2 從檢查點恢復狀態 230
10.1.3 檢查點算法 232
10.1.4 檢查點配置 237
10.1.5 保存點 239
10.2 狀態一致性 240
10.2.1 一致性的概念和級別 240
10.2.2 端到端的狀態一致性 241
10.3 端到端的精確一次 241
10.3.1 輸入端保證 242
10.3.2 輸出端保證 242
10.3.3 Flink和Kafka連線時的精確一次保證 244
10.4 本章總結 248
第11章 Table API和SQL 249
11.1 快速上手 250
11.1.1 需要引入的依賴 250
11.1.2 一個簡單示例 251
11.2 基本API 252
11.2.1 程式架構 252
11.2.2 創建表環境 253
11.2.3 創建表 254
11.2.4 表的查詢 255
11.2.5 輸出表 257
11.2.6 表和流的轉換 257
11.3 流處理中的表 262
11.3.1 動態表和持續查詢 262
11.3.2 將流轉換成動態表 263
11.3.3 用SQL持續查詢 265
11.3.4 將動態錶轉換為流 269
11.4 時間屬性和視窗 270
11.4.1 事件時間 271
11.4.2 處理時間 272
11.4.3 視窗 273
11.5 聚合查詢 275
11.5.1 分組聚合 275
11.5.2 視窗聚合 276
11.5.3 開窗聚合 279
11.5.4 套用實例——Top N 280
11.6 聯結查詢 284
11.6.1 常規聯結查詢 284
11.6.2 間隔聯結查詢 285
11.7 函式 286
11.7.1 系統函式 287
11.7.2 自定義函式 288
11.8 SQL客戶端 294
11.9 連線到外部系統 296
11.9.1 Kafka 296
11.9.2 檔案系統 298
11.9.3 JDBC 299
11.9.4 ElasticSearch 300
11.9.5 HBase 300
11.9.6 Hive 301
11.10 本章總結 304
第12章 Flink CEP 306
12.1 基本概念 306
12.1.1 CEP是什麼 306
12.1.2 模式 307
12.1.3 套用場景 307
12.2 快速上手 308
12.2.1 需要引入的依賴 308
12.2.2 一個簡單實例 308
12.3 模式API 311
12.3.1 個體模式 311
12.3.2 組合模式 316
12.3.3 模式組 319
12.3.4 匹配後跳過策略 320
12.4 模式的檢測處理 321
12.4.1 將模式套用到流上 321
12.4.2 處理匹配事件 321
12.4.3 處理逾時事件 324
12.4.4 處理遲到數據 329
12.5 CEP的狀態機實現 330
12.6 本章總結 334