会挽雕弓如满月,西北望,射天狼。 --- 苏轼【江城子·密州出猎】
数据形式:
1、有限数据流 , 批处理 , 离线计算
2、无限数据 , 流处理 , 实时计算
1. flink优点:
高吞吐、低延迟、有状态(内部设置)、<u> event time </u> <u> water mark </u> 消息乱序处理、exactly once、自动反压机制、dataset支持迭代
2. 使用场景:
事件驱动: 欺诈检测、异常检测、基于规则的告警、业务流程监控、web应用程序
数据分析:生成报表
ETL:flinkX
3. 算子特点
1)One-to-one streams 保持元素的分区和顺序:
算子代表:source、map
2)Redistributiong streams
改变流的分区,重新分区策略取决于使用的算子:
算子代表:
keyby()(re-partitions by hashing the key)、
broadcast()、
rebalance() (which re-partitions randomly)
4.windows stream 特有
1)Count windows
2)Time windows
Tumbling window:翻滚窗口,无重叠
Sliding window:滑动窗口,有重叠
Session window:以不活动间隙作为分割
3)自定义windows
5. Time
1)Event time :数据产生的时间
2)Ingestion time :flink source 拿到数据的时间
3)Procession time : 被处理的算子是什么就是哪里的时间
与window 结合
6. State operations 状态操作
1)什么是状态?
State 一般指一个具体的task/operator 的状态
2)Operator state (并行线程)
Operator state跟一个特定operator的一个并发实例绑定,整个operator只对应一个state。
3)Keyed state
基于keyedstream上的状态。这个状态是跟特定的key绑定的,对keyedstream流上的每一个key,可能都对应一个state
4)原始状态和托管状态(自己指定存储方式)
Keyed state和operator state,可以以两种形式存在:原始状态和托管状态(Flink框架管理的状态)
5)State backend(rocksdb + hdfs) 状态存储地方
7. Checkpoints
1)什么是checkpoint
Checkpoint 就是在某一时刻,将所有task的状态做一个快照(snapshot),然后存储到state backend
2)轻量级容错机制
3)保证exactly-once
4)用于内部失败的恢复(自动)
5)基本原理(面试常问)
-通过source 里面注入barrier
-barrier作为checkpoint的标志
无需人工干预
8. Savapoint(手工版本,不会过期,不会覆盖)
1)流处理过程中的状态历史版本
2)具有可以replay的功能
3)外部恢复(应用重启和升级)
4)两种方式触发
- cancel with savepoint
- 手动主动触发
5)Savepoint 可以理解为是一种特殊的checkpoint,savepoint 就是只想checkpoint的一个指针,
需要手动触发,而且不会过期,不会被覆盖,除非手动删除。
正常情况下的线上环境是不需要设置savepoint 的。除非对job或集群做出重大的改动的时候,需要进行测试运行。