劍指大數(shù)據(jù)——Flink學(xué)習(xí)精要(Scala版)
定 價(jià):105 元
叢書(shū)名:程序員硬核技術(shù)叢書(shū)
- 作者:尚硅谷教育
- 出版時(shí)間:2022/10/1
- ISBN:9787121443428
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP274
- 頁(yè)碼:312
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書(shū)基于流行穩(wěn)定版Flink 1.13進(jìn)行講解,從Flink數(shù)據(jù)處理思想開(kāi)始講起,帶領(lǐng)讀者深入理解Flink的基本架構(gòu),進(jìn)而由淺入深結(jié)合具體案例進(jìn)行講解,詳細(xì)剖析了Flink中DataStream API的使用,并對(duì)Flink中的時(shí)間語(yǔ)義、狀態(tài)、容錯(cuò)機(jī)制等重要概念進(jìn)行了詳盡的闡釋。同時(shí),本書(shū)還對(duì)實(shí)際開(kāi)發(fā)過(guò)程中常用的Flink SQL、CEP等高層級(jí)API進(jìn)行了細(xì)致講解,以電商網(wǎng)站中的實(shí)際應(yīng)用為場(chǎng)景,提供了大量的代碼實(shí)現(xiàn)。本書(shū)分為12章:第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前端等多門(mén)學(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 流處理 19
2.4 本章總結(jié) 22
第3章 Flink部署 23
3.1 快速啟動(dòng)一個(gè)Flink集群 24
3.1.1 環(huán)境配置 24
3.1.2 本地啟動(dòng) 24
3.1.3 集群?jiǎn)?dòng) 25
3.1.4 向集群提交作業(yè) 27
3.2 部署模式 30
3.2.1 會(huì)話模式 30
3.2.2 單作業(yè)模式 31
3.2.3 應(yīng)用模式 31
3.3 獨(dú)立模式 32
3.3.1 會(huì)話模式部署 32
3.3.2 單作業(yè)模式部署 32
3.3.3 應(yīng)用模式部署 32
3.3.4 高可用 33
3.4 YARN模式 34
3.4.1 相關(guān)準(zhǔn)備和配置 34
3.4.2 會(huì)話模式部署 35
3.4.3 單作業(yè)模式部署 36
3.4.4 應(yīng)用模式部署 37
3.4.5 高可用 37
3.5 K8s模式 38
3.6 本章總結(jié) 38
第4章 Flink運(yùn)行時(shí)架構(gòu) 39
4.1 系統(tǒng)架構(gòu) 39
4.1.1 整體構(gòu)成 40
4.1.2 JobManager 40
4.1.3 TaskManager 41
4.2 作業(yè)提交流程 42
4.2.1 高層級(jí)抽象視角 42
4.2.2 獨(dú)立模式 42
4.2.3 YARN集群 43
4.3 一些重要概念 45
4.3.1 數(shù)據(jù)流圖 45
4.3.2 并行度 46
4.3.3 算子鏈 48
4.3.4 作業(yè)圖與執(zhí)行圖 49
4.3.5 任務(wù)和任務(wù)槽 51
4.4 本章總結(jié) 56
第5章 DataStream API基礎(chǔ)篇 57
5.1 執(zhí)行環(huán)境 57
5.1.1 創(chuàng)建執(zhí)行環(huán)境 58
5.1.2 執(zhí)行模式 58
5.1.3 觸發(fā)程序執(zhí)行 60
5.2 數(shù)據(jù)源 60
5.2.1 準(zhǔn)備工作 60
5.2.2 從集合中讀取數(shù)據(jù) 61
5.2.3 從文件讀取數(shù)據(jù) 61
5.2.4 從Socket讀取數(shù)據(jù) 62
5.2.5 從Kafka讀取數(shù)據(jù) 62
5.2.6 自定義數(shù)據(jù)源 64
5.2.7 Flink支持的數(shù)據(jù)類型 66
5.3 轉(zhuǎn)換操作 67
5.3.1 基本轉(zhuǎn)換算子 67
5.3.2 聚合算子 71
5.3.3 用戶自定義函數(shù) 75
5.3.4 物理分區(qū) 78
5.4 輸出 83
5.4.1 連接到外部系統(tǒng) 83
5.4.2 輸出到文件 85
5.4.3 輸出到Kafka 86
5.4.4 輸出到Redis 87
5.4.5 輸出到Elasticsearch 89
5.4.6 輸出到MySQL 91
5.4.7 自定義Sink輸出 93
5.5 本章總結(jié) 94
第6章 Flink中的時(shí)間和窗口 95
6.1 時(shí)間語(yǔ)義 95
6.1.1 Flink中的時(shí)間語(yǔ)義 95
6.1.2 哪種時(shí)間語(yǔ)義更重要 97
6.2 水位線 98
6.2.1 事件時(shí)間和窗口 98
6.2.2 什么是水位線 100
6.2.3 如何生成水位線 104
6.2.4 水位線的傳遞 110
6.2.5 水位線的總結(jié) 111
6.3 窗口 112
6.3.1 窗口的概念 112
6.3.2 窗口的分類 114
6.3.3 窗口API概覽 117
6.3.4 窗口分配器 118
6.3.5 窗口函數(shù) 121
6.3.6 測(cè)試水位線和窗口的使用 129
6.3.7 其他API 131
6.3.8 窗口的生命周期 135
6.4 遲到數(shù)據(jù)的處理 136
6.4.1 設(shè)置水位線延遲時(shí)間 136
6.4.2 允許窗口處理遲到數(shù)據(jù) 137
6.4.3 將遲到數(shù)據(jù)放入窗口側(cè)輸出流 137
6.5 本章總結(jié) 140
第7章 處理函數(shù) 141
7.1 基本處理函數(shù) 141
7.1.1 處理函數(shù)的功能和使用 141
7.1.2 ProcessFunction解析 143
7.1.3 處理函數(shù)的分類 144
7.2 按鍵分區(qū)處理函數(shù) 145
7.2.1 定時(shí)器和定時(shí)服務(wù) 145
7.2.2 KeyedProcessFunction的使用 146
7.3 窗口處理函數(shù) 149
7.3.1 窗口處理函數(shù)的使用 149
7.3.2 ProcessWindowFunction解析 150
7.4 應(yīng)用案例——Top N 151
7.4.1 使用ProcessAllWindowFunction 151
7.4.2 使用KeyedProcessFunction 153
7.5 側(cè)輸出流 157
7.6 本章總結(jié) 157
第8章 多流轉(zhuǎn)換 158
8.1 分流 158
8.1.1 簡(jiǎn)單實(shí)現(xiàn) 158
8.1.2 使用側(cè)輸出流 159
8.2 基本合流操作 161
8.2.1 聯(lián)合 161
8.2.2 連接 164
8.3 基于時(shí)間的合流——聯(lián)結(jié) 169
8.3.1 窗口聯(lián)結(jié) 169
8.3.2 間隔聯(lián)結(jié) 172
8.3.3 窗口同組聯(lián)結(jié) 175
8.4 本章總結(jié) 176
第9章 狀態(tài)編程 177
9.1 Flink中的狀態(tài) 177
9.1.1 有狀態(tài)算子 177
9.1.2 狀態(tài)的管理 178
9.1.3 狀態(tài)的分類 178
9.2 按鍵分區(qū)狀態(tài) 180
9.2.1 基本概念和特點(diǎn) 180
9.2.2 支持的結(jié)構(gòu)類型 180
9.2.3 代碼實(shí)現(xiàn) 182
9.2.4 狀態(tài)生存時(shí)間 189
9.3 算子狀態(tài) 190
9.3.1 基本概念和特點(diǎn) 190
9.3.2 狀態(tài)類型 190
9.3.3 代碼實(shí)現(xiàn) 191
9.4 廣播狀態(tài) 194
9.4.1 基本用法 194
9.4.2 代碼實(shí)例 196
9.5 狀態(tài)持久化和狀態(tài)后端 197
9.5.1 檢查點(diǎn) 197
9.5.2 狀態(tài)后端 198
9.6 本章總結(jié) 200
第10章 容錯(cuò)機(jī)制 201
10.1 檢查點(diǎn) 201
10.1.1 檢查點(diǎn)的保存 202
10.1.2 從檢查點(diǎn)恢復(fù)狀態(tài) 204
10.1.3 檢查點(diǎn)算法 206
10.1.4 檢查點(diǎn)配置 210
10.1.5 保存點(diǎn) 212
10.2 狀態(tài)一致性 213
10.2.1 一致性的概念和級(jí)別 214
10.2.2 端到端的狀態(tài)一致性 214
10.3 端到端精確一次 215
10.3.1 輸入端保證 215
10.3.2 輸出端保證 215
10.3.3 Flink和Kafka連接時(shí)的精確一次保證 218
10.4 本章總結(jié) 221
第11章 Table API和SQL 222
11.1 快速上手 222
11.1.1 需要引入的依賴 223
11.1.2 一個(gè)簡(jiǎn)單示例 223
11.2 基本API 224
11.2.1 程序架構(gòu) 225
11.2.2 創(chuàng)建表環(huán)境 225
11.2.3 創(chuàng)建表 226
11.2.4 表的查詢 227
11.2.5 輸出表 229
11.2.6 表和流的轉(zhuǎn)換 230
11.3 流處理中的表 234
11.3.1 動(dòng)態(tài)表和持續(xù)查詢 235
11.3.2 將流轉(zhuǎn)換成動(dòng)態(tài)表 236
11.3.3 用SQL持續(xù)查詢 237
11.3.4 將動(dòng)態(tài)表轉(zhuǎn)換為流 241
11.4 時(shí)間屬性和窗口 242
11.4.1 事件時(shí)間 242
11.4.2 處理時(shí)間 244
11.4.3 窗口 245
11.5 聚合查詢 247
11.5.1 分組聚合 247
11.5.2 窗口聚合 248
11.5.3 開(kāi)窗聚合 250
11.5.4 應(yīng)用實(shí)例——Top N 252
11.6 聯(lián)結(jié)查詢 255
11.6.1 常規(guī)聯(lián)結(jié)查詢 256
11.6.2 間隔聯(lián)結(jié)查詢 257
11.7 函數(shù) 257
11.7.1 系統(tǒng)函數(shù) 258
11.7.2 自定義函數(shù) 259
11.8 SQL客戶端 265
11.9 連接到外部系統(tǒng) 267
11.9.1 Kafka 267
11.9.2 文件系統(tǒng) 269
11.9.3 JDBC 270
11.9.4 Elasticsearch 271
11.9.5 HBase 271
11.9.6 Hive 272
11.10 本章總結(jié) 275
第12章 Flink CEP 277
12.1 基本概念 277
12.1.1 CEP是什么 277
12.1.2 模式 278
12.1.3 應(yīng)用場(chǎng)景 279
12.2 快速上手 279
12.2.1 需要引入的依賴 279
12.2.2 一個(gè)簡(jiǎn)單實(shí)例 279
12.3 模式API 281
12.3.1 個(gè)體模式 281
12.3.2 組合模式 285
12.3.3 模式組 288
12.3.4 匹配后跳過(guò)策略 289
12.4 模式的檢測(cè)處理 290
12.4.1 將模式應(yīng)用到流上 290
12.4.2 處理匹配事件 290
12.4.3 處理超時(shí)事件 293
12.4.4 處理遲到數(shù)據(jù) 296
12.5 CEP的狀態(tài)機(jī)實(shí)現(xiàn) 297
12.6 本章總結(jié) 299