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