《大数据实时计算引擎 Flink 实战与性能优化》目录大纲

基于 Flink 1.9 讲解的书籍目录大纲,含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例,还有 Flink 落地应用的大型项目案例分享。

书籍和专栏同时在进行,扫码下面专栏二维码可以订阅专栏,提前查看书籍内容。

首发地址:http://www.54tianzhisheng.cn/2019/11/15/flink-in-action/

专栏地址:https://gitbook.cn/gitchat/column/5dad4a20669f843a1a37cb4f

书籍目录大纲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
1预备篇

第一章——实时计算引擎
1.1你的公司是否需要引入实时计算引擎
1.1.1 实时计算需求
1.1.2 数据实时采集
1.1.3 数据实时计算
1.1.4 数据实时下发
1.1.5 实时计算场景
1.1.6 离线计算 vs 实时计算
1.1.7 实时计算面临的挑战
1.1.8 小结与反思
1.2彻底了解大数据实时计算框架 Flink
1.2.1 Flink 简介
1.2.2 Flink 整体架构
1.2.3 Flink 的多种方式部署
1.2.4 Flink 分布式运行流程
1.2.5 Flink API
1.2.6 Flink 程序与数据流结构
1.2.7 丰富的 Connector
1.2.8 事件时间&处理时间语义
1.2.9 灵活的窗口机制
1.2.10 并行执行任务机制
1.2.11 状态存储和容错
1.2.12 自己的内存管理机制
1.2.13 多种扩展库
1.2.14 小结与反思
1.3大数据计算框架对比
1.3.1 Flink
1.3.2 Blink
1.3.3 Spark
1.3.4 Spark Streaming
1.3.5 Structured Streaming
1.3.6 Flink VS Spark
1.3.7 Storm
1.3.8 Flink VS Storm
1.3.9 全部对比结果
1.3.10 小结与反思
1.4总结

2第二章——Flink 入门
2.1Flink 环境准备
2.1.1 JDK 安装与配置
2.1.2 Maven 安装与配置
2.1.3 IDE 安装与配置
2.1.4 MySQL 安装与配置
2.1.5 Kafka 安装与配置
2.1.6 ElasticSearch 安装与配置
2.1.7 小结与反思
2.2Flink 环境搭建
2.2.1 Flink 下载与安装
2.2.2 Flink 启动与运行
2.2.3 Flink 目录配置文件解读
2.2.4 Flink 源码下载
2.2.5 Flink 源码编译
2.2.6 将 Flink 源码导入到 IDE
2.2.7 小结与反思
2.3案例1:WordCount 应用程序
2.3.1 使用 Maven 创建项目
2.3.2 使用 IDEA 创建项目
2.3.3 流计算 WordCount 应用程序代码实现
2.3.4 运行流计算 WordCount 应用程序
2.3.5 流计算 WordCount 应用程序代码分析
2.3.6 小结与反思
2.4案例2:实时处理 Socket 数据
2.4.1 使用 IDEA 创建项目
2.4.2 实时处理 Socket 数据应用程序代码实现
2.4.3 运行实时处理 Socket 数据应用程序
2.4.4 实时处理 Socket 数据应用程序代码分析
2.4.5 Flink 中使用 Lambda 表达式
2.4.5 小结与反思
2.5总结

2基础篇

3第三章——Flink 中的流计算处理
3.1Flink 多种时间语义对比
3.1.1 Processing Time
3.1.2 Event Time
3.1.3 Ingestion Time
3.1.4 三种 Time 的对比结果
3.1.5 使用场景分析
3.1.6 Time 策略设置
3.1.7 小结与反思
3.2Flink Window 基础概念与实现原理
3.2.1 Window 简介
3.2.2 Window 有什么作用?
3.2.3 Flink 自带的 Window
3.2.4 Time Window 的用法及源码分析
3.2.5 Count Window 的用法及源码分析
3.2.6 Session Window 的用法及源码分析
3.2.7 如何自定义 Window?
3.2.8 Window 源码分析
3.2.9 Window 组件之 WindowAssigner 的用法及源码分析
3.2.10 Window 组件之 Trigger 的用法及源码分析
3.2.11 Window 组件之 Evictor 的用法及源码分析
3.2.12 小结与反思
3.3必须熟悉的数据转换 Operator(算子)
3.3.1 DataStream Operator
3.3.2 DataSet Operator
3.3.3 流计算与批计算统一的思路
3.3.4 小结与反思
3.4使用 DataStream API 来处理数据
3.4.1 DataStream 的用法及分析
3.4.2 SingleOutputStreamOperator 的用法及分析
3.4.3 KeyedStream 的用法及分析
3.4.4 SplitStream 的用法及分析
3.4.5 WindowedStream 的用法及分析
3.4.6 AllWindowedStream 的用法及分析
3.4.7 ConnectedStreams 的用法及分析
3.4.8 BroadcastStream 的用法及分析
3.4.9 BroadcastConnectedStream 的用法及分析
3.4.10 QueryableStateStream 的用法及分析
3.4.11 小结与反思
3.5Watermark 的用法和结合 Window 处理延迟数据
3.5.1 Watermark 简介
3.5.2 Flink 中的 Watermark 的设置
3.5.3 Punctuated Watermark
3.5.4 Periodic Watermark
3.5.5 每个 Kafka 分区的时间戳
3.5.6 将 Watermark 与 Window 结合起来处理延迟数据
3.5.7 处理延迟数据的三种方法
3.5.8 小结与反思
3.6Flink 常用的 Source Connector 和 Sink Connector 介绍
3.6.1 Data Source 简介
3.6.2 常用的 Data Source
3.6.3 Data Sink 简介
3.6.4 常用的 Data Sink
3.6.5 小结与反思
3.7Flink Connector —— Kafka 的使用和源码分析
3.7.1 准备环境和依赖
3.7.2 将测试数据发送到 Kafka Topic
3.7.3 Flink 如何消费 Kafka 数据?
3.7.4 Flink 如何将计算后的数据发送到 Kafka?
3.7.5 FlinkKafkaConsumer 源码分析
3.7.6 FlinkKafkaProducer 源码分析
3.7.7 使用 Flink-connector-kafka 可能会遇到的问题
3.7.8 小结与反思
3.8自定义 Flink Connector
3.8.1 自定义 Source Connector
3.8.2 RichSourceFunction 的用法及源码分析
3.8.3 自定义 Sink Connector
3.8.4 RichSinkFunction 的用法及源码分析
3.8.5 小结与反思
3.9Flink Connector —— ElasticSearch 的用法和分析
3.9.1 准备环境和依赖
3.9.2 使用 Flink 将数据写入到 ElasticSearch 应用程序
3.9.3 验证数据是否写入 ElasticSearch?
3.9.4 如何保证在海量数据实时写入下 ElasticSearch 的稳定性?
3.9.5 使用 Flink-connector-elasticsearch 可能会遇到的问题
3.9.6 小结与反思
3.10Flink Connector —— HBase 的用法
3.10.1 准备环境和依赖
3.10.2 Flink 使用 TableInputFormat 读取 HBase 批量数据
3.10.3 Flink 使用 TableOutputFormat 向 HBase 写入数据
3.10.4 Flink 使用 HBaseOutputFormat 向 HBase 实时写入数据
3.10.5 项目运行及验证
3.10.6 小结与反思
3.11Flink Connector —— Redis 的用法
3.11.1 安装 Redis
3.11.2 将商品数据发送到 Kafka
3.11.3 Flink 消费 Kafka 中的商品数据
3.11.4 Redis Connector 简介
3.11.5 Flink 写入数据到 Redis
3.11.6 项目运行及验证
3.11.7 小结与反思
3.12使用 Side Output 分流
3.12.1 使用 Filter 分流
3.12.2 使用 Split 分流
3.12.3 使用 Side Output 分流
3.12.4 小结与反思
3.13总结

3进阶篇

4第四章——Flink 中的状态及容错机制
4.1深度讲解 Flink 中的状态
4.1.1 为什么需要 State?
4.1.2 State 的种类
4.1.3 Keyed State
4.1.4 Operator State
4.1.5 Raw and Managed State
4.1.6 如何使用托管的 Keyed State
4.1.7 State TTL(存活时间)
4.1.8 如何使用托管的 Operator State
4.1.9 Stateful Source Functions
4.1.10 Broadcast State
4.1.11 Queryable State
4.1.12 小结与反思
4.2Flink 状态后端存储
4.2.1 State Backends
4.2.2 MemoryStateBackend 的用法及分析
4.2.3 FsStateBackend 的用法及分析
4.2.4 RocksDBStateBackend 的用法及分析
4.2.5 如何选择状态后端存储?
4.2.6 小结与反思
4.3Flink Checkpoint 和 Savepoint 的区别及其配置使用
4.3.1 Checkpoint 简介及使用
4.3.2 Savepoint 简介及使用
4.3.3 Savepoint 与 Checkpoint 的区别
4.3.4 Checkpoint 流程
4.3.5 如何从 Checkpoint 中恢复状态
4.3.6 如何从 Savepoint 中恢复状态
4.3.6 小结与反思
4.4总结

5第五章——Table API & SQL
5.1Flink Table & SQL 概念与通用 API
5.1.1 新增 Blink SQL 查询处理器
5.1.2 为什么选择 Table API & SQL?
5.1.3 Flink Table 项目模块
5.1.4 两种 planner 之间的区别
5.1.5 添加项目依赖
5.1.6 创建一个 TableEnvironment
5.1.7 Table API & SQL 应用程序的结构
5.1.8 Catalog 中注册 Table
5.1.9 注册外部的 Catalog
5.1.10 查询 Table
5.1.11 提交 Table
5.1.12 翻译并执行查询
5.1.13 小结与反思
5.2Flink Table API & SQL 功能
5.2.1 Flink Table 和 SQL 与 DataStream 和 DataSet 集成
5.2.2 查询优化
5.2.3 数据类型
5.2.4 时间属性
5.2.5 SQL Connector
5.2.6 SQL Client
5.2.7 Hive
5.2.8 小结与反思
5.3总结


6第六章——扩展库
6.1Flink CEP 简介及其使用场景
6.1.1 CEP 简介
6.1.2 规则引擎对比
6.1.3 Flink CEP 简介
6.1.4 Flink CEP 动态更新规则
6.1.5 Flink CEP 使用场景分析
6.1.6 小结与反思
6.2使用 Flink CEP 处理复杂事件
6.2.1 准备依赖
6.2.2 Flink CEP 入门应用程序
6.2.3 Pattern API
6.2.4 检测 Pattern
6.2.5 CEP 时间属性
6.2.6 小结与反思
6.3Flink 扩展库——State Processor API
6.3.1 State Processor API 简介
6.3.2 在 Flink 1.9 之前是如何处理状态的?
6.3.3 使用 State Processor API 读写作业状态
6.3.4 使用 DataSet 读取作业状态
6.3.5 为什么要使用 DataSet API?
6.3.6 小结与反思
6.4Flink 扩展库——Machine Learning
6.4.1 Flink-ML 简介
6.4.2 使用 Flink-ML
6.4.3 使用 Flink-ML Pipeline
6.4.4 小结与反思
6.5Flink 扩展库——Gelly
6.5.1 Gelly 简介
6.5.2 使用 Gelly
6.5.3 Gelly API
6.5.4 小结与反思
6.6 总结

4高级篇

7第七章——Flink 作业环境部署
7.1Flink 配置详解及如何配置高可用?
7.1.1 Flink 配置详解
7.1.2 Log 的配置
7.1.3 如何配置 JobManager 高可用?
7.1.4 小结与反思
7.2Flink 作业如何在 Standalone、YARN、Mesos、K8S 上部署运行?
7.2.1 Standalone
7.2.2 YARN
7.2.3 Mesos
7.3.4 Kubernetes
7.2.5 小结与反思
7.3总结

8第八章——Flink 监控
8.1实时监控 Flink 及其作业
8.1.1 监控 JobManager
8.1.2 监控 TaskManager
8.1.3 监控 Flink 作业
8.1.4 最关心的性能指标
8.1.5 小结与反思
8.2搭建一套 Flink 监控系统
8.2.1 利用 API 获取监控数据
8.2.2 Metrics 类型简介
8.2.3 利用 JMXReporter 获取监控数据
8.2.4 利用 PrometheusReporter 获取监控数据
8.2.5 利用 PrometheusPushGatewayReporter 获取监控数据
8.2.6 利用 InfluxDBReporter 获取监控数据
8.2.7 安装 InfluxDB 和 Grafana
8.2.8 配置 Grafana 展示监控数据
8.2.9 小结与反思
8.3总结

9第九章——Flink 性能调优
9.1如何处理 Flink Job Backpressure (反压)问题?
9.1.1 Flink 流处理为什么需要网络流控
9.1.2 Flink 1.5 之前的网络流控机制
9.1.3 基于 Credit 的反压机制
9.1.4 定位产生反压的位置
9.1.5 分析和处理反压问题
9.1.6 小结与反思
9.2如何查看 Flink 作业执行计划?
9.2.1 如何获取执行计划 JSON?
9.2.2 生成执行计划图
9.2.3 深入探究 Flink 作业执行计划
9.2.4 Flink 中算子 chain 起来的条件
9.2.5 如何禁止 Operator chain?
9.2.6 小结与反思
9.3Flink Parallelism 和 Slot 深度理解
9.3.1 Parallelism 简介
9.3.2 如何设置 Parallelism?
9.3.3 Slot 简介
9.3.4 Slot 和 Parallelism 的关系
9.3.5 可能会遇到 Slot 和 Parallelism 的问题
9.3.6 小结与反思
9.4如何合理的设置 Flink 作业并行度?
9.4.1 Source 端并行度的配置
9.4.2 中间 Operator 并行度的配置
9.4.3 Sink 端并行度的配置
9.4.4 Operator Chain
9.4.5 小结与反思
9.5Flink 中如何保证 Exactly Once?
9.5.1 Flink 内部如何保证 Exactly Once?
9.5.2 端对端如何保证 Exactly Once?
9.5.3 分析 FlinkKafkaConsumer 的设计思想
9.5.4 小结与反思
9.6如何处理 Flink 中数据倾斜问题?
9.6.1 数据倾斜简介
9.6.2 判断是否存在数据倾斜
9.6.3 分析和解决数据倾斜问题
9.6.4 小结与反思
9.7总结

10第十章——Flink 最佳实践
10.1如何设置 Flink Job RestartStrategy(重启策略)?
10.1.1 常见错误导致 Flink 作业重启
10.1.2 RestartStrategy 简介
10.1.3 为什么需要 RestartStrategy?
10.1.4 如何配置 RestartStrategy?
10.1.5 RestartStrategy 源码分析
10.1.6 Failover Strategies(故障恢复策略)
10.1.7 小结与反思
10.2如何使用 Flink ParameterTool 读取配置?
10.2.1 Flink Job 配置
10.2.2 ParameterTool 管理配置
10.2.3 ParameterTool 源码分析
10.2.4 小结与反思
10.3总结


5实战篇

11第十一章——Flink 实战
11.1如何统计网站各页面一天内的 PV 和 UV?
11.1.1 统计网站各页面一天内的 PV
11.1.2 统计网站各页面一天内 UV 的三种方案
11.1.3 小结与反思
11.2如何使用 Flink ProcessFunction 处理宕机告警?
11.2.1 ProcessFunction 简介
11.2.2 CoProcessFunction 简介
11.2.3 Timer 简介
11.2.4 如果利用 ProcessFunction 处理宕机告警?
11.2.5 小结与反思
11.3如何利用 Async I/O 读取告警规则?
11.3.1 为什么需要 Async I/O?
11.3.2 Async I/O API
11.3.3 利用 Async I/O 读取告警规则需求分析
11.3.4 如何使用 Async I/O 读取告警规则数据
11.3.5 小结与反思
11.4如何利用广播变量动态更新告警规则?
11.4.1 BroadcastVariable 简介
11.4.2 如何使用 BroadcastVariable ?
11.4.3 利用广播变量动态更新告警规则数据需求分析
11.4.4 读取告警规则数据
11.4.5 监控数据连接规则数据
11.4.6 小结与反思
11.5如何实时将应用 Error 日志告警?
11.5.1 日志处理方案的演进
11.5.2 日志采集工具对比
11.5.3 日志结构设计
11.5.4 异常日志实时告警项目架构
11.5.5 日志数据发送到 Kafka
11.5.6 Flink 实时处理日志数据
11.5.7 处理应用异常日志
11.5.8 小结与反思
11.6总结

6案例篇

12第十二章——Flink 案例
12.1基于 Flink 实时处理海量日志
12.2.1 实时处理海量日志需求分析
12.2.2 实时处理海量日志架构设计
12.2.3 日志实时采集
12.2.4 日志格式统一
12.2.5 日志实时清洗
12.2.6 日志实时告警
12.2.7 日志实时存储
12.2.8 日志实时展示
12.2.9 小结与反思
12.2基于 Flink 的百亿数据实时去重
12.2.1 去重的通用解决方案
12.2.2 使用 BloomFilter 实现去重
12.2.3 使用 HBase 维护全局 Set 实现去重
12.2.4 使用 Flink 的 KeyedState 实现去重
12.2.5 使用 RocksDBStateBackend 的优化方法
12.2.6 小结与反思
12.3基于 Flink 的实时监控告警系统
12.3.1 监控系统的诉求
12.3.2 监控系统包含的内容
12.3.3 Metrics/Trace/Log 数据实时采集
12.3.4 消息队列如何撑住高峰流量
12.3.5 指标数据实时计算
12.3.6 提供及时且准确的根因分析告警
12.3.7 AIOps 智能运维道路探索
12.3.8 如何保障高峰流量实时写入存储系统的稳定性
12.3.9 监控数据使用可视化图表展示
12.3.10 小结与反思
12.4总结

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 书籍目录大纲