Flink入门知识点汇总(二)

具体内容请看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.rhkb.cn/news/283402.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(C语言)浮点数在内存中的存储详解

1. 浮点数 常见的浮点数:3.14159、 1E10等 ,浮点数家族包括: float、double、long double 类型。 浮点数表示的范围: float.h 中定义. 2. 浮点数的存储 我们先来看一串代码: int main() {int n 9;float* pFloa…

分页多线程处理大批量数据

1.业务场景 因为需要从一个返利明细表中获取大量的数据,生成返利报告,耗时相对较久,作为后台任务执行。但是后台任务如果不用多线程处理,也会要很长时间才能处理完。 另外考虑到数据量大,不能一次查询所有数据在内存…

分布式Raft原理详解,从不同角色视角分析相关状态

分布式Raft原理详解,从不同角色视角分析相关状态 1. CAP定理2.Raft 要解决的问题3. Raft的核心逻辑3.1. Raft的核心逻辑2.1. 复制状态机2.2. 任期 Term2.3. 任期的意义:逻辑时钟2.4 选举定时器 3. Leader选举逻辑4. 从节点视角查看Leader选举4.1. Follow…

qt+ffmpeg 实现音视频播放(三)之视频播放

一、视频播放流程 (PS:视频的播放流程跟音频的及其相似!!) 1、打开视频文件 通过 avformat_open_input() 打开媒体文件并分配和初始化 AVFormatContext 结构体。 函数原型如下: int avformat_open_inpu…

ideaSSM 工程车辆人员管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 工程车辆人员管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具 有完整的源代码和数据库&…

[AIGC] 在Spring Boot中指定请求体格式

在使用Spring Boot开发Web应用的时候,我们经常会遇到需要接收并处理HTTP请求的情况。一个HTTP请求通常包括一个请求行、若干请求头和一个请求体。请求体在POST和PUT请求中特别重要,因为它通常用于向服务器传递数据。 文章目录 创建并使用一个Java Bean指…

计算机二级Python基础操作题

题目来源:计算机二级Python半个月抱佛脚大法(内呈上真题版) - 知乎 第4,5,6,7,9,10,11套 1. 基础题1 sinput() print("{:\"^30x}".format(eval(s))) b …

【S5PV210】 | GPIO编程

【S5PV210】 | GPIO编程 时间:2024年3月17日22:02:32 目录 文章目录 【`S5PV210`】 | `GPIO`编程目录1.参考2.`DataSheet`2.1.概述2.1.1.特色2.1.2 输入/输出配置2.1.3 `S5PV210` 输入/输出类型2.1.4 IO驱动强度**2.1.4.1 类型A IO驱动强度****2.1.4.2 类型A IO驱动强度****2…

Selenium不同版本配置自动下载驱动及打包细节

Selenium配置浏览器驱动 自动下载浏览器驱动的方法 selenium4.7.0自动下载浏览器驱动的方法 selenium4.11.0 或4.11.1手动设置浏览器驱动路径的方法pyinstaller打包程序时同时打包ChromeDriverchromedriver路径需要sys._MEIPASS的路径进行引用方法一:通过–add-data…

LiveGBS流媒体平台GB/T28181功能-HTTPS 服务支持配置开启什么时候需要开启HTTPS测试SSL证书配置HTTPS测试证书

LiveGBS功能支持HTTPS 服务支持配置开启什么时候需要开启HTTPS测试SSL证书配置HTTPS测试证书 1、配置开启HTTPS1.1、准备https证书1.1.1、选择Nginx类型证书下载 1.2、配置 LiveCMS 开启 HTTPS1.2.1 web页面配置1.2.2 配置文件配置 2、HTTPS测试证书3、验证HTTPS服务4、为什么要…

安防监控视频汇聚平台EasyCVR接入海康Ehome设备,设备在线但视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

python5:基于多进程的并发编程、基于协程的并发编程的学习笔记

进程 为什么要使用多进程?——GIL的存在,多线程实际不是并发执行 将任务分为两类:IO密集型(多线程)CPU密集型(多进程) 多进程的基本用法 concurrent.futures.process.ProcessPoolExecutor#进…

Airgorah:一款功能强大的WiFi安全审计工具

关于Airgorah Airgorah是一款功能强大的WiFi安全审计工具,该工具可以轻松发现和识别连接到无线接入点的客户端,并对特定的客户端执行身份验证攻击测试,捕捉WPA握手包,并尝试破解接入点的密码。在该工具的帮助下,广大研…

C语言联合体和枚举

前言 这篇博客就把剩下的两个自定义类型联合体和枚举好好总结一下,让我们好好看看联合体和枚举到底是什么 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1. 联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联…

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测 目录 分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现PSO-KELM粒子群优化算法优化核极限学习机分类预测(完整源…

ideaSSM 高校公寓交流员管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 高校公寓交流管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&…

C语言:自定义类型(结构体)

目录 一、结构的特殊声明二、结构的自引用三、结构体内存对齐1.对齐规则2.为什么存在内存对齐(1)平台原因 (移植原因):(2)性能原因: 3.修改默认对齐数 四、结构体传参五、结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段使用的注意…

硬件工程师入门基础知识(四)多层陶瓷电容应用(三)

多层陶瓷电容应用(三) 1.开关电源输出滤波电容器如何选择和计算?2.线性电源和开关电源对于滤波电容的选择有何区别?3.哪些电路适合三端多层陶瓷电容?4.哪些电路适合金属支架多层陶瓷电容?1.开关电源输出滤波电容器如何选择和计算? 无论任何开关电源拓扑,其输出滤波的目…

乐得瑞科技PD协议芯片:OTG与充电并行,引领数据交互

在科技日新月异的今天,数据交互的方式对于我们的日常生活和工作都起到了至关重要的作用。但在OTG技术诞生之前,这一过程却显得相当繁琐和耗时。想象一下,你需要将数码相机的照片导入到笔记本电脑中,却不得不频繁地拔出内存卡&…

YOLOv5目标检测学习(6):源码解析之:训练部分train.py

文章目录 前言一、导入相关包与配置二、主函数main2.1 checks:检查rank值来判断是否打印参数、检查git仓库、检查包的安装2.2 判断是否恢复上一次模型训练提问:opt.data, opt.cfg, opt.hyp, opt.weights, opt.project各是什么? 2.3 DDP mode&…