07 Jan 2020
Flink 大纲
1 Flink框架、基础入门
- 1.1 整体架构
- 1.2 部署方式
- 1.3 分布式运行流程
- 1.4 与其他计算框架的对比
- 1.5 统一的批处理和流处理系统
- 1.6 自己的内存管理机制
- 1.7 dataflow模型 taskmanager, job, operator, node, task,subtask之间的关系
- 1.8 并行度
- 1.9 重启策略
- 1.10 批处理容错
2 Flink 中的流计算处理
- 2.1 Flink 多种time对比 – Processing Time、Event Time 和 Ingestion Time
- 2.2 Window 基础概念与实现原理 – 有两处性能优化点:1. window是否是all window;2. window function是否为ProcessWindowFunction
- 2.2 Watermark 的用法和结合 Window 处理延迟数据
- 2.3 触发器
- 2.4 使用DataStream API来处理数据
- SingleOutputStreamOperator
- KeyedStream
- SplitStream
- WindowedStream
- allWindowedStream
- connectedSreams
- BroadcastStream
- BroadcastConnectedStream
- QueryableStateStream
- 2.5 Flink常用的Source Connector 和 Sink Connector
- kafka
- ES
- HBase
- Redis
- 2.6 使用 Side Output分流(flink中不支持连续split分流,所以鼓励用side output)
3 Flink 中的状态及容错机制
- 3.1 State
- 为什么需要 State?
- Keyed State
- Operator State
- Raw and Managed State
- State TTL(存活时间)
- Broadcast State
- Queryable State
- 3.2 Flink 状态后端存储
- StateBackends
- MemoryStateBackend
- FsStateBackend
- RocksDBStateBackend(RocksDBStateBackend 是目前唯一支持增量 checkpoint 的后端。)
-
3.3 Flink Checkpoint 和 Savepoint 的区别及其配置使用 – Source Task会在数据流中安插CheckPoint barrier
- Exactly Once 和 At Least Once 为什么barrier对齐就是Exactly Once?为什么barrier不对齐就是 At Least Once? – 通过一个读取kafka数据进行日pv统计的例子进行讲解
4 Table API & SQL
- 4.1 Flink Table & SQL 概念与通用API
- 4.2 Flink Table API & SQL 功能
5 扩展库
6 作业环境部署
7 监控
8 性能调优
- 8.1 如何处理 Flink Job Backpressure (反压)问题?一文彻底搞懂 Flink 网络流控与反压机制
- flink 流处理为什么需要网络流控
- Flink 1.5 之前的网络流控机制
- 基于 Credit 的反压机制
- 定位产生反压的位置
- 分析和处理反压问题
- Flink 如何在吞吐量和延迟之间做权衡?
- 8.2 Flink 作业执行计划 operator chain 理解flink中的计算资源
- 8.3 Flink Parallelism 和 Slot 深度理解
9 单元测试
- 9.1 测试 user-defined Functions
- 单元测试无状态,无时间 UDF
- 单元测试有状态或者及时的UDF,以及自定义算子
- 9.2 测试job
- JUnit Rule MiniClusterWithClientResource
Til next time,
at 09:42