Flink Watermark 机制

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink Watermark 机制相关的知识,希望对你有一定的参考价值。

传送门:Flink 系统性学习笔记


Flink版本:1.11.0

1. 为何要使用 Watermark?

在说 Watermark 之前,我们先提一下 EventTime(事件时间)和 ProcessingTime(处理时间)。事件时间是事件在现实世界中发生的时间,处理时间是 Flink 系统处理该事件的时间。如果我们比较关心事件实际发生的时间,我们就需要基于事件时间进行处理。但是基于事件时间,我们就不得不面对乱序的问题。

通常情况下,由于网络或者系统等外部因素影响,事件往往不能及时传输到 Flink 系统中,导致数据延迟到达。另一方面,流处理从事件产生,到流经 Source,再到算子,中间是有一个过程和时间的。虽然大部分情况下,流到算子的数据都是按照事件产生的时间来的,但是也可能由于网络、背压等原因,导致乱序的产生。

因此,我们需要一种机制能够控制数据处理的过程和进度,比如,基于事件时间的 Window 创建后,那如何确定属于该 Window 的数据已经全部到达。如果确定全部到达,就可以对 Window 的所有数据做窗口计算操作,如果数据没有全部到达,则继续等待该 Window 中的数据全部到达才开始处理。这种情况下就需要使用 Watermark,它能够衡量数据处理进度(表达数据到达的

以上是关于Flink Watermark 机制的主要内容,如果未能解决你的问题,请参考以下文章

Flink水印机制(watermark)

[白话解析] Flink的Watermark机制

1分钟理解Flink中Watermark机制

Flink Watermark分配策略

Flink详解系列之五--水位线(watermark)

Flink 轻松理解 Watermark