flink水位线传播及任务事件时间

Flink通过水位线记录在数据流中传播时间戳,任务事件时间取决于接收的最小水位线。若水位线不更新,会导致任务无法触发计算,引起状态膨胀和内存问题,甚至引发OOM。因此,保持水位线规律递增和分区平衡至关重要。
摘要由CSDN通过智能技术生成

背景

本文来讲解一下flink的水位线传播及对其对任务事件时间的影响

水位线

首先flink是通过从源头生成水位线记录的方式来实现水位线传播的,也就是说水位线是嵌入在正常的记录流中的特殊记录,携带者水位线的时间戳,以下我们就通过图片的方式来讲解下水位线是如何传播以及更新任务的事件时间的.
在这里插入图片描述
如上图所示,任务中的事件时间等于任务中收到的前置任务中的最小水位线时间,然后任务会把当前任务的事件时间通过广播的方式向下游传播.

总结

从水位线的更新我们可以知道它依赖于前置的每个任务周期性的推进对应分区的水位线时间,也就是如果某个分区的水位线时间一直不更新,那么任务的事件时间就会没法更新,这样也就导致一直没法触发时间相关算子任务的计算,从而导致该任务只能不停的缓冲其他分区的记录流,从而导致状态大小膨胀以及内存消耗的增加,甚至导致OOM的严重后果,所以所有分区的水位线必须有规律的递增,并且相互之间不能相差太大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值