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.mzph.cn/news/765303.shtml

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

相关文章

001-Windows下PyTorch极简开发环境配置(上)

本节介绍Windows系统下配置一套基于Pytorch框架的极简深度学习开发环境。 目录 0.1 缘起 0.1 缘起 其实大概在2016就开始接触深度学习的相关知识,但一直到2018年左右,还停留在门外汉的状态太,原因很简单,感觉学习的门槛过高。…

web前端之小功能聚集、简单交互效果

MENU 纯CSS实现可编辑文字霓虹灯闪烁效果css之实现流水文字、闪烁、荧光、炫酷web前端之文本擦除效果与下划线结合css之下划线动画 纯CSS实现可编辑文字霓虹灯闪烁效果 效果图 html <h1 contenteditable"true">Hello World</h1>style * {margin: 0;pa…

C/C++在线参考手册的使用技巧

cppreference.com是一个在线的C/C参考手册&#xff0c;是C/C学习者最常用的网站。 网址&#xff1a;cppreference.com 1&#xff0e;搜索 不知道为什么这个网站总是不能正常搜索&#xff0c;实在是太不方便了。 有两个退而求其次的方法&#xff1a; (1)通过搜索引擎指定域名…

无服务器推理在大语言模型中的未来

服务器无服务器推理的未来&#xff1a;大型语言模型 摘要 随着大型语言模型(LLM)如GPT-4和PaLM的进步&#xff0c;自然语言任务的能力得到了显著提升。LLM被广泛应用于聊天机器人、搜索引擎和编程助手等场景。然而&#xff0c;由于LLM对GPU和内存的巨大需求&#xff0c;其在规…

C++常用的区块代码

很多人在刷题时都遇到过不会的情况 这篇文章希望可以帮到你&#xff01; 1.输入n将这个数倒着输出来&#xff1a; while(n!0){tn%10;printf("%d",t);nn/10; }只要会这条代码&#xff0c;很多题目都可以直接秒杀。 如&#xff1a; 输入一个整数n,算出它各个位数的乘积…

【RPC研究】socket 函数调用

突然想深入学习一下RPC调用&#xff0c;研究一下发现这个东西相关联的东西还是比较多的&#xff0c;而且也算补齐一下别的知识。 接下来会写一下相关的知识&#xff0c;但没有什么参考资料基本都是博客看的&#xff0c;或者自己本科学的知识融合&#xff0c;并没有翻啥书&…

[Repo Git] manifests的写法

​manifests​​是个啥 在Repo​中manifests​描述了Repo客户端的结构&#xff0c;也就是可以从manifests​中知道各个模块的代码应该从代码管理仓库当中哪个位置去获取。 ​manifests​的基本结构是一个Git存储库&#xff0c;在顶层目录中持有一个default.xml​文件。 由于m…

程序员想要搞钱不迷茫,这篇文章你可得码好啦!!!

年已经过完了&#xff0c;现在大家都已经返工返校了吧&#xff01;咱又要投入到新一年的战斗了&#xff01;春色恼人不等闲&#xff0c;相信咱都有一个实实在在的愿望和期许&#xff1a;身体健康&#xff0c;财源广进&#xff01;新的一年我们还得继续努力&#xff0c;多多搞钱…

利用IP地址查防止电子招投标串标行为

随着信息技术的快速发展&#xff0c;电子招投标已成为政府和企业采购的主要方式。然而&#xff0c;电子招投标中的串标问题也愈发突出&#xff0c;给公平竞争和资源分配带来了隐患。为了防止串标行为&#xff0c;利用IP地址查已成为一种有效手段。 IP地址查询&#xff1a;IP数…

002_avoid_for_loop_in_Matlab避免使用for循环

避免使用for循环 在程序设计思想中&#xff0c;循环是一个很有力的工具。在循环中&#xff0c;计算机很轻松地重复执行相同的操作。循环是汇编之上的编程中最重要的概念之一。Matlab的循环有两个语言构造&#xff0c;一个是for循环&#xff0c;另一个是while循环。在Matlab中&…

Python实战:全局变量与局部变量

一、引言 在Python编程中&#xff0c;全局变量和局部变量是两种常见的变量类型&#xff0c;它们在代码的执行过程中扮演着重要的角色。理解全局变量和局部变量的概念、作用域和生命周期对于编写清晰、可维护的代码至关重要。本文将详细介绍Python中的全局变量与局部变量&#…

【Vue3笔记01】如何使用Vue3和Vite搭建前端项目的基础开发环境

这篇文章,主要介绍如何使用Vue3和Vite搭建前端项目的基础开发环境【知识星球】。 目录 一、搭建项目环境 1.1、前提条件 1.2、开始搭建 1.3、下载依赖

罗德与施瓦茨联合广和通全面验证RedCap模组FG132系列先进性能

近日&#xff0c;罗德与施瓦茨联合广和通完成Redcap(Reduce Capability)功能和性能验证。本次测试使用R&SCMX500 OBT(One Box Tester)无线通信测试仪&#xff0c;主要验证广和通RedCap模组FG132系列射频性能以及IP层吞吐量&#xff0c;包括RedCap上下行吞吐量和射频指标如矢…

【计算机网络篇】数据链路层(2)封装成帧和透明传输

文章目录 &#x1f95a;封装成帧和透明传输&#x1f388;封装成帧&#x1f388;透明传输&#x1f5d2;️面向字节的物理链路使用字节填充的方法实现透明传输。&#x1f5d2;️面向比特的物理链路使用比特填充的方法实现透明传输。 &#x1f6f8;练习 &#x1f95a;封装成帧和透…

css的transform详解

CSS的transform属性是一个功能强大的工具&#xff0c;允许你对HTML元素应用2D或3D转换效果&#xff0c;包括旋转、缩放、倾斜和移动等。以下是对transform属性中各种函数和参数的详细介绍&#xff1a; 2D转换函数&#xff1a; translate()&#xff1a;该函数用于移动元素。它接…

洛谷P8218 【深进1.例1】求区间和 【前缀和】【一阶差分】【二阶差分】

文章目录 前缀和前缀和例题题意 差分差分例题及code↓模版例题输入样例&#xff1a;输出样例&#xff1a; code↓ 前缀和 前缀和定义&#xff1a; 前缀和数组的第 i i i 位即为原数组 1 1 1 ~ i i i 位的和 原数组&#xff1a; 1 2 3 4 5 前缀和数组&#xff1…

BGP聚合:

BGP聚合&#xff1a; 1、功能&#xff1a; 1.1 可以指向BGP邻居发送聚合后的路由条目&#xff0c;从而减少路由表项&#xff08;优化&#xff09;&#xff1b; 1.2 如果明细路由产生震荡&#xff0c;那么聚合后的路由不受影响。 1.3 简化路由表项&#xff0c;达到节省设备资源…

Linux systemd详解

1、概念 1.1 systemd systemd 是一个用于管理 Linux 系统启动过程和系统服务的系统和服务管理器。它被设计为取代传统的 System V init 系统&#xff0c;提供了更快的启动时间、并行启动服务、更好的日志记录和更强大的管理功能。 1.2 unit Unit 是 systemd 中所有配置文件…

springboot接口跨域问题解决

1、实现WebMvcConfigurer接口package com.common.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigur…

基于ssm校园美食交流系统论文

目 录 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 2.1Java技术 6 2.2 Mysql数据库 6 2.3 B/S结构 7 2.4 SSM框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行性 10 3.1.3 操作可行性 10…