4个角度轻松理解 Flink中的Watermark

【FLink】水位线(Watermark) 在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。说白了就是事件时间戳。 阅读详情

目录

有缓存就必然有延迟

必须勇敢地输出排序流的第一个结果

watermark 定义了何时不再等待更早的数据

设想不同的策略来生成 watermark


当我们第一次接触 Flink 时往往会对其中的 watermark 感到困惑。但实际上 watermark 并不复杂。在本文中我们将通过一个简单的例子来说明为什么需要水印以及它们如何工作。

在下文中的例子中,我们有一个带有时间戳的事件流,但是由于某种原因流中的事件并不是按顺序到达的。图中的数字代表事件发生的时间戳(Event-time)。第一个事件在时间4达到,它后面跟着的是发生在更早时间(时间 2)的事件,以此类推:

注意这是一个按照事件时间(Event-time)处理的例子,上面所述的时间戳所表示的是事件真实发生时间,而非事件处理的时间(Processing-Time) 。事件时间(Event-Time)处理的强大之处在于,无论是在处理当前的数据还是重新处理历史(数据重放)的数据,基于事件时间创建的流计算应用都可以保证最终执行结果是一致的。

假设我们现在正在尝试创建一个流计算排序算子。即将一个乱序到达的事件流按照事件时间进行顺序输出。数据流中的第一个元素的事件时间是 4,但是我们不能直接将它作为排序后数据流的第一个元素进行输出。因为数据是乱序到达的,也许有一个更早发生的数据还没有到达。实际上,我们在上面的例子中可以提前预知到这个流中元素2 的事件事件比4更早,我们的排序算子至少要等到 2 这条数据的到达后再做输出。

有缓存就必然有延迟

数据流中的第一个元素的事件时间是 4,但是我们不能直接将它作为排序后数据流的第一个元素进行输出。因为数据是乱序到达的,也许有一个更早发生的数据还没有到达。实际上,我们在上面的例子中可以提前预知到这个流中元素2 的事件事件比4更早,我们的排序算子至少要等到 2 这条数据的到达后再做输出。

必须勇敢地输出排序流的第一个结果

如果我们假设事件2已经达到,而且我们相信2之前还有更早的事件需要等待,在上面例子中的数据流中, 实际上已经没有比2更早的事件了,我们可能会永远等待下去。总之,我们的应用程序不能保证一定有更早的数据还未到达,所以不能无条件的等下去。

watermark 定义了何时不再等待更早的数据

我们需要某种策略用于定义了对于任何带事件事件的数据流,何时停止等待更早数据的到来。

Flink 中的事件时间处理依赖于一种特殊的带时间戳的元素,称为 watermark,它们会由数据源或是 watermark 生成器插入数据流中。具有时间戳 t 的 watermark 可以被理解为断言了所有时间戳小于或等于 t 的事件都(在某种合理的概率上)已经到达了。

何时我们的排序算子应该停止等待,然后将事件 2 作为首个元素输出?答案是当收到时间戳为 2(或更大)的 watermark 时。

设想不同的策略来生成 watermark

我们知道每个事件都可能会延迟一段时间才到达且这些延迟差异会比较大,有些事件会比其他事件延迟更多。一种简单的方法是假设这些延迟不会超过某个最大值。Flink 把这种策略称作 "有界无序生成策略"(bounded-out-of-orderness)。当然也有很多更复杂的方式去生成 watermark,但是对于大多数常规应用来说,固定延迟方式已经足够了。

往期精选▼

Flink中Checkpoint和Savepoint 的 3 个不同点

Flink实现固定时长或消息条数的触发器 

使用 Broadcast State 的 4 个注意事项

3种Flink State Backend | 你该用哪个?

100%会被问到的两道Flink面试题,你会了么?

识别二维码, 关注我们

大数据学习心路:从Java基础到Hadoop生态的实战闭环 大数据技术体系的核心在于构建高效、可扩展的数据处理能力,其原理基于分布式计算和存储架构,旨在解决海量数据的采集、存储、计算与分析难题。从编程基础与数据思维入手,深入理解单机环境下的并发、网络与IO模型,是掌握分布式框架的基石。以Hadoop生态为例,通过搭建伪分布式及完全分布式集群,实践MapReduce编程模型,能够深刻领会分布式计算的“分而治之”思想与容错机制。这种“以战养兵,问题驱动”的学习方法,强调将理论学习、环境搭建、项目实战与面试复盘形成闭环,其技术价值在于培养快速吸收新知识并解决实际问题的工程 阅读详情

相关推荐

Flink原理:这一次带你彻底搞懂watermark

文章目录背景定义生成1. 生成时机2. 生成方式更新规则1. 单并行度2. 多并行度传播窗口触发时机分析1. 示例一2. 示例二3. 示例三如何设置最大乱序时间延迟数据处理1. 定义2. 触发条件3. 示例延迟数据重定向1. 定义2. 示例 背景 我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件...

welcome to daijiguo's blog 2012

【Flink 核心篇】详解 Flink 中的 WaterMark

Watermark 是 Apache Flink 为了处理 EventTime 窗口计算提出的一种机制,本质上也是一种时间戳。Watermark 是用于处理乱序事件或延迟数据的,这通常用 Watermark 机制结合 Window 来实现(Watermarks 用来触发 Window 窗口计算)。

Data · Model · Agent · Repeat 4735

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

1分钟理解Flink中Watermark机制

1分钟理解Flink中Watermark

m0_68470434的博客 3038

JavaScript China城市联动

中国全城市的地址省,市,县 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <script src="jquery.js"></script> <script src="json.js"></...

唯唯同学 2241

攻防世界 misc题GFSJ1129-【您看我还有机会吗?】

我们发现了隐藏内容,一开始我以为那个英文就是flag,提交后发现不对,然后我想只有一张图片然后图片上的隐写内容又不是flag,那必定还有什么文件被隐藏了,于是我们打开VMware并启动Ubuntu,使用binwalk分析一下有没有隐藏文件,我们要在Terminal中分析,如下。我们发现里面有一个flag.txt文件,我们尝试提取里面内容,但发现又要密码,我们想起了之前图片上的隐藏内容,我们将那段英文输入(包括空格和符号,在VMware中输入密码不会有显示,你看到的就像没输入一样),然后我们看到如下。

大数据专业,关注 AI 安全与数学建模。记录 Web 安全、对抗攻击、隐私保护等安全实践,以及从经典模型到智能方法的建模思考。用数学思维理解 AI,用 AI 方法反哺安全与建模。 1092

FlinkSQL的Watermark机制和Checkpoint机制

Watermark机制,就是水印机制,也叫做水位线机制。就是专门用来解决流式环境下数据迟到问题的。

sijiwang95的博客 2296

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 361

Flink:watermark

三种时间概念 在谈watermark之前,首先需要了解flink的三种时间概念。在flink中,有三种时间戳概念:Event Time 、Processing Time 和 Ingestion Time。其中watermark只对Event Time类型的时间戳有用。这三种时间概念分别表示: Processing time 处理时间,指执行算子操作的机器的当前时间。当基于处理时间运行时,所有关于时间的操作(如时间窗口)都将使用执行算子操作的机器的本地时间。例如,当时间窗口为一小时时,如果应用程序在9:

啥也不会的博客 4882

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

专注于编程、AI、人工智能等多个领域内容研究和分析 639

中小企业办公网络配置综合实验华为设备(NAT+策略路由+OSPF+VLAN)

组网需求: 1、PC1、2、3、4均可以访问internet的lo0:8.8.8.8 2、PC1、PC4通过电信ISP访问internet;PC2、PC3通过联通ISP访问internet; 需求分析: 1、internet路由器模拟公网,8.8.8.8模拟公网IP;电信ISP、联通ISP路由器模拟电信和联通运营商;出口路由为企业出口路由器;这四个路由器直连链路之间运行ospf,配置动态路由,实现互通; 2、出口路由与三层交换直连链路运行ospf,动态同步路由信息; 3、出口路由器内网端口配..

A soul tortured by desire 7124

flink 不设置水印_4个角度轻松理解 Flink中的Watermark

当我们第一次接触 Flink 时往往会对其中的 watermark 感到困惑。但实际上 watermark 并不复杂。在本文中我们将通过一个简单的例子来说明为什么需要水印以及它们如何工作。 4个角度理解Flink中的watermark在下文中的例子中,我们有一个带有时间戳的事件流,但是由于某种原因流中的事件并不是按顺序到达的。图中的数字代表事件发生的时间戳(Event-time)。第一个事件在时间...

weixin_39861054的博客 104

宇树科技嵌入式面试题及参考答案(春晚机器人的公司)

内存对齐是指在内存中为数据对象分配存储空间时,按照一定的规则将数据存储在特定的地址上,以提高内存访问效率。不同的数据类型在内存中都有其特定的对齐要求,例如,int类型通常要求 4 字节对齐,double类型通常要求 8 字节对齐。这意味着数据的存储地址必须是其对齐字节数的整数倍。如果不进行内存对齐,处理器在访问数据时可能需要进行多次内存访问,从而降低了访问效率。指令可以用于控制结构体内存布局,它允许程序员指定结构体成员的对齐方式。其基本用法是在结构体定义之前使用来指定对齐字节数n,其中n。

大模型大数据攻城狮的专栏 3224

Flink State 使用的4点建议

一.Operator state 使用建议 慎重使用长 list 下图展示的是当前版本中 task 端 operator state 在执行完 checkpoint 返回给 job master 端的 StateMetaInfo 的代码片段。 由于 operator state 没有 key group 的概念,所以在修改任务并发度进行恢复时,需要将operator state中的每一个序列后的元素存储一个位置偏移量(offset),如上图红框中的offsets数组所示。 另外如果...

yscoder的博客 991

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

w0shishabi的博客 5685

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

基于Flink CEP与Kafka的实时游戏高光时刻检测系统实战

实时数据处理是现代大数据架构中的核心概念,它涉及对连续产生的数据流进行即时处理与分析。其原理在于通过流处理引擎对无界数据流进行低延迟的计算与状态管理,从而实现实时响应。这项技术的核心价值在于能够从海量事件中即时发现模式、识别异常或提取有价值的信息,广泛应用于实时监控、风险控制、个性化推荐等场景。在游戏领域,实时数据处理技术可用于精准识别玩家精彩操作,例如通过复杂事件处理(CEP)引擎对玩家行为流进行模式匹配,快速捕捉如“四杀”等高光时刻。本文以Apache Flink的CEP库和状态管理为核心,结合Kafk

weixin_30407613的博客 335

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

spark 获取广播变量_Spark性能调优之在实际项目中广播大变量

引言广播变量允许开发人员将一个只读的变量缓存在每台机器上而不用在任务之间传递变量。广播变量可被用于有效地给每个节点一个大输入数据集的副本。一个Executor只需要在第一个Task启动时获得一份Broadcast数据,之后的Task都直接从本节点的BlockManager中获取相关数据。优化前默认情况下task执行算子中使用了外部的变量时,每个task都会获取一份变量的副本,有什么缺点...

weixin_39914243的博客 96

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Flink的Checkpoint机制与参数配置

Flink的状态都是基于本地的,而Flink又是一个部署在多节点的分布式引擎,分布式系统经常出现进程被杀、节点宕机或网络中断等问题,那么本地的状态在遇到故障时如何保证不丢呢?Flink定期保存状态数据到存储上,故障发生后从之前的备份中恢复,整个被称为Checkpoint机制,它为Flink提供了Exactly-Once的投递保障。本文将介绍Flink的Checkpoint机制的原理。本文会使用多个概念:快照(Snapshot)、分布式快照(Distributed Snapshot)、检查点(Checkpoi

m0_61607827的博客 2867

【Flink 面试指南】Flink 详解(二):核心篇 Ⅰ(窗口、WaterMark)

Flink 支持两种划分窗口的方式(time 和 count)。第一种,按时间驱动进行划分、另一种按数据驱动进行划分。

Data · Model · Agent · Repeat 2649

Flink WaterMark 详解

在进行窗口处理时,不可能无限期的等待延迟数据到达,当到达特定watermark时,认为在watermark之前的数据已经全部达到(即使后面还有延迟的数据), 可以触发窗口计算,这个机制就是 Watermark(水位线),具体如下图所示。如果水位线设置的过于宽松,好处是计算时能保证近可能多的数据被收集到,但由于此时的水位线远落后于处理记录的时间戳,导致产生的数据结果延迟较大。如果设置的水位线过于紧迫,数据结果的时效性当然会更好,但由于水位线大于部分记录的时间戳,数据的完整性就会打折扣。3.2 水位线分配器。

freeRoad 1661

一文带你搞懂Flink Watermark

1、Watermark的介绍 首先我们应该了解一个概念,就是Watermark是用来测量时间的进度的一种方法。 因为我们在使用EventTime时间来进行计算的时候,由于EventTime是真实世界的时间,那么百分之100可能会发生乱序数据,那么何为乱序数据呢,也就是说,我1分钟前产生的数据现在才进入到我的系统中进行处理,这里就是延迟数据,那么乱序就是在正常的时间数据流中夹杂着一些非顺序的一些数据,例如某台机器的网络抖动,或者网卡和系统的延迟导致了这台机器上报的数据延迟上传,那么flink在处理的时候,这个

百看不如一RUN 1429

第六章 Flink原理之WaterMark详解

Flink原理之WaterMark详解

qq_27924553的博客 3521

Flink基础(五):WaterMark详解

一、WaterMark机制引入的背景 前面提到了Time的概念,如果我们使用Processing Time,那么在 Flink 消费数据的时候,它完全不需要关心的数据本身的时间,意思也就是说不需要关心数据到底是延迟数据还是乱序数据。因为 Processing Time 只是代表数据在 Flink 被处理时的时间,这个时间是顺序的。 但是如果你使用的是 Event Time 的话,那么你就不得不面临...

weixin_42155491的博客 3721

[白话解析] Flink的Watermark机制

[白话解析] Flink的Watermark机制 0x00 摘要 对于Flink来说,Watermark是个很难绕过去的概念。本文将从整体的思路上来说,运用感性直觉的思考来帮大家梳理Watermark概念。 0x01 问题 关于Watermark,很容易产生几个问题 Flink 流处理应用中,常见的处理需求/应对方案是什么? Watermark究竟应该翻译成水印还是水位线? Wa...

微赚淘客开发者博客 823

Flink流计算编程--watermark(水位线)简介

1、watermark的概念watermark是一种衡量Event Time进展的机制,它是数据本身的一个隐藏属性。通常基于Event Time的数据,自身都包含一个timestamp,例如1472693399700(2016-09-01 09:29:59.700),而这条数据的watermark时间则可能是:watermark(1472693399700) = 1472693396700(2016

lmalds的专栏 6万+
上一篇: 使用 Broadcast State 的 4 个注意事项
下一篇: Flink中Checkpoint和Savepoint 的 3 个不同点
yscoder
博客等级 码龄10年 27粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值