本書旨在幫助讀者從零開始快速掌握Flink的基本原理與核心功能。本書首先介紹了Flink的基本原理和安裝部署,并對Flink中的一些核心API進(jìn)行了詳細(xì)分析。然后配套對應(yīng)的案例分析,分別使用Java代碼和Scala代碼實現(xiàn)案例。*后通過兩個項目演示了Flink在實際工作中的一些應(yīng)用場景,幫助讀者快速掌握Flink開發(fā)。 學(xué)習(xí)本書需要大家具備一些大數(shù)據(jù)的基礎(chǔ)知識,比如Hadoop、Kafka、Redis、Elasticsearch等框架的基本安裝和使用。本書也適合對大數(shù)據(jù)實時計算感興趣的讀者閱讀。 學(xué)習(xí)本書需要大家具備一些大數(shù)據(jù)的基礎(chǔ)知識,例如Hadoop、Kafka、Redis、Elasticsearch等框架的基本安裝和使用。本書也適合對大數(shù)據(jù)實時計算感興趣的愛好者閱讀。
Flink是大數(shù)據(jù)處理領(lǐng)域*近冉冉升起的一顆新星,它可以基于Hadoop進(jìn)行開發(fā)和使用,與Hadoop緊密結(jié)合。本書旨在幫助讀者從零開始快速掌握Flink的基本原理與核心功能,并具有以下特點: 1.這是一本Flink入門級圖書,力求詳細(xì)而完整地描述Flink基礎(chǔ)理論與實際操作。 2.采用Flink 1.6版本寫作,案例豐富實用,做到學(xué)以致用。 3.細(xì)節(jié)與案例兼顧,深入淺出展現(xiàn)Flink技術(shù)精髓。 4.51CTO熱門網(wǎng)課配套教材,可與網(wǎng)課結(jié)合學(xué)習(xí),快速提升大數(shù)據(jù)開發(fā)技能。
徐葳,擁有多年一線互聯(lián)網(wǎng)公司軟件的研發(fā)經(jīng)驗,曾擔(dān)任獵豹移動大數(shù)據(jù)技術(shù)專家、中科院大數(shù)據(jù)研究院大數(shù)據(jù)技術(shù)專家、某大學(xué)外聘大數(shù)據(jù)講師。他主導(dǎo)開發(fā)海外輿情監(jiān)控系統(tǒng)、海量數(shù)據(jù)采集平臺、OLAP數(shù)據(jù)分析平臺、三度關(guān)系推薦系統(tǒng)和PB級數(shù)據(jù)檢索系統(tǒng)等,并進(jìn)行大數(shù)據(jù)相關(guān)的內(nèi)容培訓(xùn)。此外,他對Hadoop、Storm和Spark等大數(shù)據(jù)技術(shù)框架有深入的理解。
第 1章 Flink概述 1
1.1 Flink原理分析 1
1.2 Flink架構(gòu)分析 2
1.3 Flink基本組件 3
1.4 Flink流處理(Streaming)與批處理(Batch) 4
1.5 Flink典型應(yīng)用場景分析 5
1.6 流式計算框架對比 6
1.7 工作中如何選擇實時計算框架 8
第 2章 Flink快速入門 9
2.1 Flink開發(fā)環(huán)境分析 9
2.1.1 開發(fā)工具推薦 9
2.1.2 Flink程序依賴配置 10
2.2 Flink程序開發(fā)步驟 11
2.3 Flink流處理(Streaming)案例開發(fā) 11
2.3.1 Java代碼開發(fā) 12
2.3.2 Scala代碼開發(fā) 14
2.3.3 執(zhí)行程序 16
2.4 Flink批處理(Batch)案例開發(fā) 16
2.4.1 Java代碼開發(fā) 16
2.4.2 Scala代碼開發(fā) 18
2.4.3 執(zhí)行程序 19
第3章 Flink的安裝和部署 20
3.1 Flink本地模式 20
3.2 Flink集群模式 22
3.2.1 Standalone模式 23
3.2.2 Flink on Yarn模式 26
3.2.3 yarn-session.sh命令分析 30
3.2.4 Flink run命令分析 30
3.3 Flink代碼生成JAR包 31
3.4 Flink HA的介紹和使用 35
3.4.1 Flink HA 35
3.4.2 Flink Standalone集群的HA安裝和配置 35
3.4.3 Flink on Yarn集群HA的安裝和配置 50
3.5 Flink Scala Shell 53
第4章 Flink常用API詳解 56
4.1 Flink API的抽象級別分析 56
4.2 Flink DataStream的常用API 57
4.2.1 DataSource 57
4.2.2 Transformation 66
4.2.3 Sink 70
4.3 Flink DataSet的常用API分析 80
4.3.1 DataSource 80
4.3.2 Transformation 81
4.3.3 Sink 82
4.4 Flink Table API和SQL的分析及使用 82
4.4.1 Table API和SQL的基本使用 83
4.4.2 DataStream、DataSet和Table之間的轉(zhuǎn)換 87
4.4.3 Table API和SQL的案例 91
4.5 Flink支持的DataType分析 97
4.6 Flink序列化分析 97
第5章 Flink高級功能的使用 99
5.1 Flink Broadcast 99
5.2 Flink Accumulator 104
5.3 Flink Broadcast和Accumulator的區(qū)別 108
5.4 Flink Distributed Cache 108
第6章 Flink State管理與恢復(fù) 112
6.1 State 112
6.1.1 Keyed State 113
6.1.2 Operator State 115
6.2 State的容錯 116
6.3 CheckPoint 118
6.4 StateBackend 119
6.5 Restart Strategy 121
6.6 SavePoint 123
第7章 Flink窗口詳解 125
7.1 Window 125
7.2 Window的使用 126
7.2.1 Time Window 127
7.2.2 Count Window 128
7.2.3 自定義Window 129
7.3 Window聚合分類 130
7.3.1 增量聚合 130
7.3.2 全量聚合 132
第8章 Flink Time詳解 134
8.1 Time 134
8.2 Flink如何處理亂序數(shù)據(jù) 135
8.2.1 Watermark 136
8.2.2 Watermark的生成方式 137
8.3 EventTime Watermark解決亂序數(shù)據(jù)的案例詳解 138
8.3.1 實現(xiàn)Watermark的相關(guān)代碼 138
8.3.2 通過數(shù)據(jù)跟蹤Watermark的時間 142
8.3.3 利用Watermark Window處理亂序數(shù)據(jù) 149
8.3.4 Late Element的處理方式 153
8.3.5 在多并行度下的Watermark應(yīng)用 163
8.3.6 With Periodic Watermarks案例總結(jié) 165
第9章 Flink并行度詳解 166
9.1 Flink并行度 166
9.2 TaskManager和Slot 166
9.3 并行度的設(shè)置 167
9.3.1 并行度設(shè)置之Operator Level 168
9.3.2 并行度設(shè)置之Execution Environment Level 168
9.3.3 并行度設(shè)置之Client Level 169
9.3.4 并行度設(shè)置之System Level 169
9.4 并行度案例分析 169
第 10章 Flink Kafka Connector詳解 172
10.1 Kafka Connector 172
10.2 Kafka Consumer 173
10.2.1 Kafka Consumer消費策略設(shè)置 173
10.2.2 Kafka Consumer的容錯 175
10.2.3 動態(tài)加載Topic 176
10.2.4 Kafka Consumer Offset自動提交 177
10.3 Kafka Producer 177
10.3.1 Kafka Producer的使用 177
10.3.2 Kafka Producer的容錯 179
第 11章 Flink實戰(zhàn)項目開發(fā) 184
11.1 實時數(shù)據(jù)清洗(實時ETL) 184
11.1.1 需求分析 184
11.1.2 項目架構(gòu)設(shè)計 184
11.1.3 項目代碼實現(xiàn) 186
11.2 實時數(shù)據(jù)報表 205
11.2.1 需求分析 205
11.2.2 項目架構(gòu)設(shè)計 206
11.2.3 項目代碼實現(xiàn) 207