Flink技术分享
2022-07-02 09:25:37 0 举报
AI智能生成
flink生态知识树,算子特点,选型等
作者其他创作
大纲/内容
slot
组成
TM
运行的组件介绍
运行架构
JM
任务提交流程和调度原理
任务提交流程
当窗口第一个元素到达时就该创建
创建
当窗口最后一个时间达到时+允许延迟时间
销毁
滚动窗口5分钟大小,允许延迟1分钟,那么1:00-1:05,1:06分钟窗口移除
举例
窗口将被移除,仅限time-based-window
allowedLateness
指窗口函数在什么条件下触发计算
还可以在创建和删除之间,清除窗口内容,仅限于窗口内元素,而不是窗口元数据,意味着仍然可以添加数据到该窗口中
窗口大小超过4或者达到水位线触发计算
Trigger-触发器
将在触发器触发之后或者函数应用前后,过滤窗口中的元素
Evicter-驱逐器
函数定义了应用于窗口生命周期内的计算逻辑
Window的函数
生命周期
out of order/late event
eventTime处理进度标志
表示没有比水位线更低的数据了
基于watermark触发窗口计算
作用
基于eventTime是有序
此时watermark就是一个简单的周期性标记
有序流中的watermark
基于eventTime是无序
它告诉算子比watermark的时间戳更小的已经达到,算子可以将内部时间提前到watermark时间戳,即触发窗口计算
乱序流中的watermark
通常在source后面生成,但是后续流程中也可以生成
指定多次,后面的watermark会覆盖前面的值
source的每个subtask,会生成独立的水位线
通过当前算子时,会推进当前算子的eventTime,同时会生成一个新的watermark给下游算子
多算子(union,keyby)当前eventTime是其输入流的最小值
特点
并行流中的watermark
watermark的介绍
只有基于eventtime的事件流,需要指明时间戳和watermark的生成方式
指定时间特性为eventtime
直接source function中生成
提取时间戳作为eventtime,默认为processtime
含义
只在构建window时,才起作用
限制
指定window来处理事件时间时,用来指定事件时间怎么获取
场景
assginTimestampsAndWaterMark
两种生成方式
基于Timer
setAutoWatermakerIntever(默认200ms)设置watermark发送周期
实现了AssignerWithPeriodicWatermark
方式
AscendingTimestampExtractor
场景,数据流有序的
递增
BoundedOutOfOrdernessTimestampExtractor
场景,数据流乱序的
延迟
实现
PeriodicWatermark
基于某些事件触发wagermark的生成和发送(由代码实现,例如遇到特殊元素)
实现了AssignerWithPuncuateWatermark
PuncuateWatermark
两种watermark
时间戳+watermark
子主题
事件时间
处理时间
事件摄取时间
时间属性的介绍
默认eligned with epoch(整点,正分,正秒)
对齐方式
时间对齐
event不重复
窗口长度固定
滚动窗口
event重复
滑动窗口
时间不对齐
events不重叠
没有固定的窗口大小
基于用户行为进行统计分析
固定
动态
Gap
特殊处理方式
使用
事件窗口
有相同的key会分配给一个独立窗口
必须指定自定义触发器
与nokey窗口是两个概念
全局窗口
并行度固定1
windowsAll
window join
window key
窗口分类器
不同窗口的介绍
window
tableAPI和SQL讲解和现阶段的成果
产生的原因和设计思想
背景
都是 SQL 查询表达式
包含
SQL 查询语句可以在 Table API 中定义的表上执行
优势
SQL 抽象与 Table API 抽象之间的关联是非常紧密的
局限
最顶层抽象是 SQL
以表(Table)为中心的声明式编程(DSL)API
表和 DataStream/DataSet 可以进行无缝切换
Table API 与 DataStream/DataSet API 混合使用
执行之前还会使用优化器中的优化规则对用户编写的表达式进行优化。
还是比 Core API 的表达能力差
第三层抽象是 Table API
DataStream API
DataSet API
自定义转换(transformations)、联接(joins)、聚合(aggregations)、窗口(windows)和状态(state)操作等
Fluent API为数据处理提供了通用的模块组件
此层 API 中处理的数据类型在每种编程语言中都有其对应的类
第二层抽象是 Core APIs
抽象实现是 Process Function
DataStream API可集成使用
自由地处理来自单流或多流的事件(数据)
提供具有全局一致性和容错保障的状态
此层抽象中注册事件时间(event time)和处理时间(processing time)回调方法,从而允许程序可以实现复杂计算。
优点
过于抽象,不容易编写程序
最底层的抽象为有状态实时流处理
Flink API
概览
keyed state
Checkpointing
Unaligned Checkpointing
State Backends
Savepoints
Exactly Once vs. At Least Once
状态持久化(Persistence)
有状态实时流处理-stateful stream processing
是有状态实时流的扩展
时间概念
Event Time and Processing Time
Watermarks in Parallel Streams
Event Time and Watermarks
迟到
窗口
及时流处理-Timely stream processing
flink架构
概念透析
部署模式
把常用的处理操作展示一下
流处理的常规操作
有状态计算的介绍
checkpoint的算法
状态和容错的介绍
时间可以的话讲讲源码,调优
Flink技术分享
0 条评论
下一页