Flink入门知识点汇总(二)

news2024/9/23 9:27:37

具体内容请看b站尚硅谷课程! 32_Flink运行时架构_提交流程_Yarn应用模式_哔哩哔哩_bilibili

窗口

Flink的窗口并不是静态准备好的,而是动态创建的。数据流到达时不会准备24个或者其他完整数量的桶,而是当下桶接满了,才临时又拿新桶。本质原因就是Flink是事件驱动型的计算引擎,数据流是未知而隐秘的。

滚动和滑动都是可以基于时间和数量的,但是会话窗口只能是基于时间。会话这个概念没有基于数量的。

注意这一点很重要:一般的业务日志数据都含有时间戳!


水位线WaterMark

可以根据数据的事件时间设立一个逻辑时钟,不管什么时候处理,即使现在8:10分,处理事件的事件时间为8:05,那么逻辑时钟也是8:05,只随着新到数据的时间戳推动。可以想象,WaterMark水位线就是一种允许延迟的逻辑时钟

  • 水位线这种逻辑时钟,表示的就是整个数据的处理过程。它只能增长,但允许延迟,等到从当前数据提取到的时间戳大于水位线时,才会插入一条新的水位线,表示该水位线之前的数据都已处理完毕。
  • 数据量大的情况下,需要考虑两个问题,一是不能为每个数据都设置水位线,否则性能下降严重,需要间隔设置;二是需要考虑到数据的延迟和乱序(可能也有网络的原因),乱序需要保证每次插入水位线时都是当前所有数据的最大时间戳,无论是单独设置水位线还是间隔设置。而延迟往往需要水位线在当前最大时间戳的基础上推迟一小段时间,而这个时间是Flink窗口计算延迟性能的最关键时间。(因为此时,虽然确实能够在乱序数据流的时间上具有正确性,但实际意义并不完整,乱序只是延迟的表现结果之一。如果需要让水位线最大程度上表示可以开始窗口计算的时机,就必须要进一步考虑完整的延迟状态。延迟确实能够导致乱序,但是解决乱序的方法不一定能够满足绝大部分延迟数据被纳入窗口计算的要求。)
    1. 举个例子,如果我们的窗口是从9:00到9:05(这就是时间 B),我们会等待直到 Watermark 告诉我们:“到9:05为止的树叶我认为都已经到了”。即使此时已经是9:06或9:07(此时-9:05就是等待的时间),因为考虑到了树叶(数据)可能的延迟,我们仍然可以准确地计算9:00到9:05这个时间窗口内的树叶数量。
    2. Watermark 的机制使得 Flink 能够在处理实时数据流时,智能地处理数据的延迟和乱序问题。它让 Flink 知道何时可以开始对特定时间窗口的数据进行处理和聚合计算,即便这些数据不是完全按照实际发生的时间顺序到达的。这对于需要按时间段进行分析和统计的实时应用尤其重要,比如实时监控、实时统计分析等场景。
    3. 在 Flink 中,处理窗口数据的延迟主要有两个部分:一是数据到达的延迟,二是等待 Watermark 的延迟。实际上,等待 Watermark 的延迟通常是决定窗口计算总体延迟的主要因素,尤其是在处理乱序数据或有延迟到达数据的场景中。
  • 水位线是真实在数据流中生成的数据!表示当前事件时间的进展(单调递增,无法倒流)。

直到时间戳为12的数据来了,此时WaterMark=12-2=10,超过了窗口(桶)的时间容积,所以换新桶。并且之前时间戳大于10的数据都会放在新桶中。(WaterMark只是决定当前窗口是否关闭)

  • 在实时流处理中,是有可能存在多个窗口同时“开启”(即接收数据)的情况。例如,当处理一个滑动窗口或者数据到达有延迟时,不同事件时间的数据可能会被分配到不同的窗口中,这些窗口可能部分重叠或完全独立。

窗口的存储和计算

  • 数据的暂存:在窗口关闭之前,属于该窗口的数据(或窗口的中间计算状态)会在 Flink 的状态中暂存。这意味着,对于每个窗口,Flink 需要维护一个状态来存储属于该窗口的数据或计算结果。
  • 窗口的触发计算:当水位线超过某个窗口的结束时间时,表明该窗口可以被触发计算了(即该窗口内的所有相关数据都已到达)。这时,Flink 会对该窗口的数据执行定义好的计算逻辑(如聚合操作),并输出计算结果。此后,该窗口的状态可以被清理以释放资源。

延迟数据的处理

  • Flink 允许窗口在其正常关闭(即水位线超过窗口结束时间)后还能处理一些延迟到达的数据。这是通过定义“允许的延迟”(allowed lateness)来实现的。如果设置了允许的延迟时间,即使窗口已经触发计算,但在这段延迟时间内到达的数据仍然可以被添加到对应的窗口中,并可能导致窗口再次触发计算(更新计算结果)。
  • 最后的绝招:Flink 允许通过侧输出(Side Outputs)机制处理超出水位线太多的迟到数据,提供了额外的灵活性来处理这些数据。

状态清理

关于窗口状态的清理,Flink 提供了几种不同的策略。默认情况下,当窗口触发计算后,如果没有设置允许的延迟时间,窗口状态会被立即清理。如果设置了允许的延迟时间,窗口状态会在延迟时间过后才被清理。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1536443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ClickHouse01-什么是ClickHouse

什么是ClickHouse? 关于发展历史存在的优势与劣势什么是它风靡的原因? 什么是ClickHouse? 官方给出的回答是,它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统 当然这边不得不提到OLAP(Online Analytical Pr…

Nginx 的安装、启动和关闭

文章目录 一、背景说明二、Nginx 的安装2.1、依赖的安装2.2、Nginx 安装2.3、验证安装 三、启动 Nginx3.1、普通启动3.2、如何判断nginx已启动3.3、通过配置启动3.4、设置开机启动 四、关闭 Nginx4.1、优雅地关闭4.2、快速关闭4.3、只关闭主进程4.4、使用nginx关闭服务 五、重启…

IP SSL证书注册流程

使用IP地址申请SSL证书,需要用公网IP地址申请,申请之前确保直接的IP地址可以开放80或者443端口两者选择1个就好,端口不需要一直开放,只要认证的几分钟内开放就可以了,然后IP地址根目录可以上传txt文件。 IP SSL证书认…

【最后2天】京东云游戏云服务器0门槛抽奖送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息:抽奖活动开启!时间:3月17日——3月24日 最高奖品:16G 6个月;32G 3个月 抽奖规则:B站点赞评论关注即可参与抽奖,3.24日公布获奖名单。 抽奖地址: 【首次抽奖】16G、32G免费…

EKMA曲线及大气O3来源解析技术应用

目前,大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染,首先需要了解导致臭氧生成的主要前体物。因此,EKMA曲…

LeetCode:2617. 网格图中最少访问的格子数(优先级队列 Java)

目录 2617. 网格图中最少访问的格子数 题目描述: 实现代码与解析: 优先级队列 原理思路: 2617. 网格图中最少访问的格子数 题目描述: 给你一个下标从 0 开始的 m x n 整数矩阵 grid 。你一开始的位置在 左上角 格子 (0, 0) 。…

鸿蒙一次开发,多端部署(六)自适应布局

针对常见的开发场景,方舟开发框架提炼了七种自适应布局能力,这些布局可以独立使用,也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时,增加或减小的空间全部分配给容…

【Winform学习笔记(十一)】解决无边框窗体最大化显示异常问题

解决无边框窗体最大化显示异常问题 前言正文1、防止改变窗口大小时控件闪烁2、FrmMain_SizeChanged 前言 Winform 无边框窗体的设计,旨在为用户提供更加独特和个性化的界面体验,但是在实现这一设计的过程中,最大化显示异常问题往往成为开发者…

关于5.x版本的Neo4j与py2neo的访问技巧

先说结果。 Neo4j是可以使用py2neo来操作的。而且网上搜到的教程和方法里,首推的http连接方法可能并不是最好的,应该用 bolt 方法可能更好。 对于大多数使用 py2neo 与 Neo4j 数据库进行交互的应用程序来说,建议使用 Bolt 协议(即…

谷歌DeepMind推出3D游戏AI代理SIMA,实现自然语言操控游戏新纪元

近日,谷歌DeepMind研究团队推出了一款名为SIMA的创新AI代理,专为3D游戏环境设计。这款代理独树一帜,无需访问游戏源代码或依赖定制API,仅通过输入图像和简单的自然语言文本指令,便能实现与人类玩家相当的游戏操作。 AI…

Django数据库查询

聚合查询 分组查询 F与Q查询 默认情况下,用Q包裹的两个条件,用逗号分割也是and关系 choices参数 只要某个字段的可能性是完全可以列举出来的,可以采取choices参数 该gender字段存的还是数字,但是如果数字在上面的元组列举范围内,该怎么获取对应的值,如果不在范围内,会怎…

springboot网站开发解决图片存储问题,前端无法访问解决办法

最近使用springboot开发网站的时候,遇到了一个图片存储问题,我之前的方法是,把证书图片存在项目的static目录下面,这样的话,打包发布到远程服务器后,虽然可以正常展示已经打包封装好的内容,但是…

【Java】Java程序员必备的一些流程图

一、spring的生命周期 Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要; 首先容器启动后,对bean进行初始化按照bean的定义,注入属性检测该对象是否实现了xxxAware接口,并将相…

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障: 表现为IGM机器人K5控制柜不能开机或突然断电。 检查:检查电源线是否连接良好,有无破损;检查电源模块的输出电压是否正常; 维修方法:如电源模块损坏&…

蓝桥杯-模拟-旋转图片

题目 思路 Python中range() 函数的使用介绍_python指定范围内的整数-CSDN博客 range(start, stop, step):生成一个序列包含start到stop-1的整数,其中步长为step 代码 n, m map(int, input().split()) a [list(map(int, input().split())) for _ in…

2024年Jira全面解析:从 Jira 的概念到优缺点、最新政策

Jira是澳大利亚的Atlassian公司开发的一款项目管理软件,名字来源于日文中“哥斯拉”的称呼“Gojira”。Jira不仅可以追踪缺陷和问题,还能管理项目。很多企业还将JIRA用于一些特殊的场景,比如作为仓库自动化工具、管理文档流程、优化费用等等。…

34 | 到底可不可以使用join?

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类: 1. 我们 DBA 不让使用 join,使用 join 有什么问题呢? 2. 如果有两个大小不同的表做 join,应该用哪个表做驱动表呢? 今天这篇文…

实型数据详解

1 实型常量的表示方法 实数(real number)又称浮点数(floating-point number)。实数有两种表示形式: (1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。.123、123.、123.0、0.0都是十进制小数形式。 (2)指数形式。如123e3或123E3都代表123x103。但注意字母e(或E)…

LeetCode 热题 100 | 堆(一)

目录 1 什么是堆排序 1.1 什么是堆 1.2 如何构建堆 1.3 举例说明 2 215. 数组中的第 K 个最大元素 2.1 子树大根化 2.2 遍历所有子树 2.3 弹出栈顶元素 2.4 完整代码 菜鸟做题,语言是 C 1 什么是堆排序 1.1 什么是堆 堆的定义和分类&#xff…