【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(事件与时间维度分析)

news2024/12/24 21:22:31

手把手+零基础带你玩转大数据流式处理引擎Flink(事件与时间维度分析

  • 总体内容
    • 不同时间种类
    • Event-Time 处理
      • Event-Time 处理
        • 案例分析
      • Watermarks水印
        • Watermarks水印的作用
      • 状态保存与迁移
        • 保存点(Savepoint)
  • 总结内容
    • 不同时间种类
    • Event-Time 处理
    • Watermarks水印
    • 状态保存与迁移

总体内容

本文主要针对于Flink技术架构中的【事件与时间维度分析】的要点处理模式,包含:不同时间种类、Event-Time的处理、Watermarks水印以及状态保存和迁移。
在这里插入图片描述

不同时间种类

在Flink及其他流式处理引擎出现之前,大数据处理引擎只支持Processing-time的处理。如果定义了一个运算窗口,假如将该窗口设定为每小时进行结算,使用Processing-time进行运算时,发现数据引擎将在3点至4点间收集到的数据进行结算。但是实际上,当做报表或者分析结果时,我们更关心的是在3点至4点之间实际产生的数据的输出结果,而想要了解实际数据的输出结果,我们需要采用Event-Time的方式进行处理。这是因为Event-Time 是基于数据的真实时间戳来进行运算处理,在计算窗口时会考虑事件发生的时间,所以能够更加准确地反映出事件发生的真实情况。

在这里插入图片描述
在图中,Event-Time指的是事件发生的时间戳。数据在最开始的队列中被接收后,会被划分为不同的批次,随后进行Event-Time Process处理。这一处理过程会根据事件发生的时间戳对数据进行运算。具体来说,每隔一小时,数据都会被划分为一个新的批次。

Event-Time 处理

Event-Time 是基于数据的真实时间戳来进行运算处理。在事件发生的时间上进行 Re-bucketing,将对应时间段(例如3点到4点)的数据放在相应时间的 Bucket 中,并在该时间段结束后产生计算结果。因此,Event-Time 和 Processing-Time 的概念之间的对比存在差异。Processing-Time 指数据到达处理引擎的时间,而不是事件实际发生时间,因此进行处理时往往会导致数据的不准确性。

在这里插入图片描述

Event-Time 处理

Event-Time的重要性在于准确地记录引擎输出运算结果的时间,因此可以更加有效地进行数据处理和分析

案例分析

举个例子,如果一个流式引擎连续24小时在运行、搜集资料,并且在Pipeline中有一个 windows Operator 正在进行运算,每小时能够产生结果。

为了得到准确的结果,在 windows Operator 完成运算并输出运算值的时间点记录 Event-Time 是非常关键的。这个时间点表示该收的数据已经到位,可以进行下一步的数据处理和分析。在实时数据处理中,Event-Time的准确性对于后续数据分析和预测非常重要。
在这里插入图片描述

Watermarks水印

Flink实际上是用watermarks来实现Event-Time的功能。Watermarks在Flink中也属于特殊事件,其精髓在于当某个运算值收到带有时间戳“T”的watermarks时就意味着它不会接收到新的数据了。
在这里插入图片描述
Flink 中实际上是使用 Watermarks 来实现 Event-Time 的功能。Watermarks 是 Flink 中的一种特殊事件,其功能在于为流处理过程中的事件引入一种时间概念,并且在 Flink 的时间语义中起到关键性的作用。

Watermarks水印的作用

  • Watermarks的作用是当某个运算值收到带有时间戳“T”的 Watermarks 时,就意味着它不会再接收到新的数据了,也就是说它可以开始进行下一步的处理。通过 Watermarks 和 Event-Time 结合起来使用,可以更加准确地处理实时数据,在数据处理效率和准确性上得到更好的保障。

  • 使用 Watermarks 的好处在于可以更准确地预估数据的到达时间,从而更加准确地掌握数据处理进展情况。假设预计数据的到达时间与输出结果的时间差为 5 分钟,在Flink中所有的 Window Operator 会搜索 3 点至 4 点的数据,但是由于存在延迟需要再额外等待 5 分钟才能收集完毕4:05分的数据,因此Watermarks的作用就在于在这个时间段内对数据进行处理。

  • 当运算值接收到时间戳为4:05的Watermarks 时,才能判定4点钟的数据收集完成,然后才会产出 3 点至 4 点的数据结果。这个时间段的结果是由 Watermarks 来标识的。

状态保存与迁移

在流式处理应用中,有时需要更改应用的逻辑或修复 bug,此时需要将前一个执行状态迁移到新的执行状态,可以通过使用 Flink 的 Savepoint 来实现。同时,如果需要重新定义应用程序的并发度,可以通过更改 Flink 中的并发度参数来重新定义应用程序的并行度。这个参数可以在 Flink 的配置文件中设置,或者在创建 Flink 应用程序时动态指定。

如果需要升级运算集群的版本号,在 Flink 中可以使用升级工具来进行升级操作。升级工具会将现有的运算集群停止,然后将其升级到指定的版本。在升级过程中,Flink 会自动将现有的应用程序状态保存下来,以便升级完成后可以继续进行处理。

保存点(Savepoint)

保存点(Savepoint):一个手动产生的检查点(Checkpoint),保存点记录着流式应用中所有运算元的状态。

在这里插入图片描述
在实际的流式处理应用中,Savepoint 的产生非常重要,可以帮助应用实现状态迁移、处理质量的提升等功能。它的实现原理是通过手动在 Checkpoint barrier 流中插入分布式快照点,产生 Savepoint。Savepoint 可以保存在任何位置,并且在变更应用时,可以直接从 Savepoint 恢复执行。

需要注意的是,在从 Savepoint 恢复执行时,时间是持续前进的,因此需要确保恢复到的是最新的数据,才能保证处理结果的一致性。此外,在重新运算时,可以使用 Process Event-Time 或 Event-Time+Buckting 策略,以确保运算结果的一致性。其中,Event-Time 策略适用于窗口大小较小的情况,而 Event-Time+Buckting 策略适用于窗口大小较大或重新运算的数据量较大的情况。

通过合理地使用 Savepoint,我们可以轻松实现流式处理应用的状态管理,从而提高应用的可靠性和处理质量。

总结内容

不同时间种类

Processing-time:在大数据处理引擎只支持Processing-time的情况下,定义运算窗口时可以设定结算时间,例如每小时进行一次结算。但如果使用Processing-time进行运算,会发现所有在3点至4点间收集到的数据只会在下一个结算周期被结算。

对比Processing-time,当我们需要对在3点至4点之间实际产生的数据进行报表或者分析时,使用Processing-time进行运算可能不够准确。相反,我们需要采用Event-Time的方式进行处理

Event-Time 处理

Event-Time是基于数据的真实时间戳来进行运算处理,因此在计算窗口时会考虑事件发生的时间,能够更准确地反映事件发生的真实情况,从而提供更准确的分析结果。

Watermarks水印

在Flink中实现Event-Time的功能,需要使用watermarks。因为watermarks是一种特殊的事件,它的作用是通知Flink的运算值,在当前时刻之前窗口中的所有事件数据都已经到达,因此不会再接收到新的数据。这样,Flink就能够在安全的情况下处理来自Event-Time的数据。因此,使用watermarks是实现Flink的Event-Time的关键。

状态保存与迁移

Flink中提供了Savepoint来实现状态迁移和处理逻辑更改。在流式处理应用中,有时候需要修改应用的逻辑或修复bug,这时就需要将前一个执行状态迁移到新的执行状态。除此之外,如果需要重新定义应用程序的并发度,也可以通过更改Flink中的并发度参数来实现。这个参数可以在Flink的配置文件中设置,或者在创建Flink应用程序时动态指定。通过调整并行度,可以实现对Flink应用程序的优化。

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

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

相关文章

百亿大表 Join 提速 300倍!Apache Doris 在约苗数据平台的实时数仓建设实践

本文导读: 约苗平台是国内目前最大的成人预防接种管理服务平台。近年来,随着各功能的不断完善,用户数量不断增多,越来越多注册数据、疫苗类别点击数据、页面浏览时长等数据被生成和积累,如何有效利用这些数据进行处理…

LVS-DR群集

文章目录 LVS-DR群集1 DR模式1.1 数据包流向分析1.2 DR模式的特点1.3 ARP问题 2 DR模式部署2.1 部署192.168.146.60(做nfs共享)2.2 部署192.168.146.30(启动nginx服务)2.3 部署192.168.146.50(启动nginx服务&#xff0…

向海图强!水声功率放大器助力海洋技术研究及海洋经济扬帆远航!

昨天是第十五个“世界海洋日”,今年的世界海洋日宣传日主题为“保护海洋生态系统人与自然和谐共生”,旨在呼吁全世界人们关注海洋自然环境现况,帮助人们进一步了解我们的海洋家园,保持健康可持续性的的海洋生态系统发展。 作为陆…

AI制作口播视频,原来这么简单

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 在前面的文章中,我们介绍了生成自己专属卡通形象照,这张照片不仅能作头像,还可以让照片说话,作为我们…

服了呀,现在的00后太卷了.....

前几天我们公司一下子来了几个新人,这些年前人是真能熬啊,本来我们几个老油子都是每天稍微加会班就打算走了,这几个新人一直不走,搞得我们也不好走。 最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备明年…

Windows 禁止 IE 转 Edge「整合方案」

前言 IE 已经合并进 Edge 浏览器,IE「正式入土」 RESPECT ​ 昨晚,公司系统更新(Edge)结束后,原本正常运行的 RPA 全部下线,原因如图: ​ 早上起来,又是充满希望的一天,于…

力扣 1483. 树节点的第 K 个祖先

力扣 1483. 树节点的第 K 个祖先 题目地址:https://leetcode.cn/problems/kth-ancestor-of-a-tree-node/ 暴力查找(超时)哈希查找(超空间)树上倍增 预处理 ancestor 数组记录了第 i 个 node 的倍增祖先&#xff0c…

深度相机、实验箱、扫描仪、机器狗…… 奥比中光超强性能3D视觉应用亮相VALSE 2023

导读 6月10日-12日,VALSE 2023视觉与学习青年学者研讨会在江苏无锡举办,奥比中光作为金牌赞助商,携Femto Mega与Gemini 2系列3D相机以及3D视觉实验箱开发套件、手持3D扫描仪、四足机器狗等创新解决方案参展,为3D视觉开发者提供多…

苹果app上线审核被拒 Guideline 1.2 - Safety - User Generated Content

苹果的App Review We found in our review that your app includes user-generated content but does not have all the required precautions. Apps with user-generated content must take specific steps to moderate content and prevent abusive behavior. Next Steps T…

Spark大数据处理学习笔记2.1 初识Spark

文章目录 一、学习目标二、spark概述(一)Spark的组件1、Spark Core2、Spark SQL3、Spark Streaming4、MLlib5、Graph X6、独立调度器、Yarn、Mesos (二)Spark的发展史1、发展简史2、目前最新版本 三、spark特点(一&…

现在的00后,真是不要命了?

谁说00后躺平了,但是有一说一,该卷的还是卷。这不,上个月我们公司来了个00后,工作没两年,跳槽到我们公司起薪22K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

Python与大数据:Hadoop、Spark和Pyspark的应用和数据处理技巧

章节一:引言 在当今的数字时代,数据成为了无处不在的关键资源。大数据的崛起为企业提供了无限的机遇,同时也带来了前所未有的挑战。为了有效地处理和分析大规模数据集,必须依靠强大的工具和技术。在本文中,我们将探讨…

Spring Boot整合MyBatis

文章目录 一、Spring Boot数据访问概述二、Spring Boot 整合MyBatis(一)基础环境搭建1、数据准备(1)创建博客数据库(2)创建文章表(3)文章表插入记录(4)创建评…

车队试验的远程实时显示方案

风丘科技推出的数据远程实时显示方案可更好地满足客户对于试验车队远程实时监控的需求,真正实现试验车队的远程管理。随着新的数据记录仪软件IPEmotion RT和相应的跨平台显示解决方案的引入,让我们的客户端不仅可在线访问记录器系统状态,还可…

Overhaul Distillation(ICCV 2019)原理与代码解析

paper:A Comprehensive Overhaul of Feature Distillation official implementation:GitHub - clovaai/overhaul-distillation: Official PyTorch implementation of "A Comprehensive Overhaul of Feature Distillation" (ICCV 2019) 本文的…

【状态估计】基于数据模型融合的电动车辆动力电池组状态估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LVS负载均衡与DR模式

LVS负载均衡与DR模式 一、DR模式的特点二、LVS-DR中的ARP问题1.VIP地址相同导致响应冲突2.返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱 三、DR模式 LVS负载均衡群集部署实验准备实验部署实验步骤1.配置负载调度器(192.168.30.10)2.…

荣登第一,亚马逊云科技帮助用户实现云上快速部署,轻松维护不同类型的数据库

近期,Gartner发布了2022年全球数据库管理系统(Database Management System,DBMS)市场份额报告,在这一排名中出现了微妙变化,那就是亚马逊云科技超过微软,登上了第一“宝座”,占据了市…

MySQL数据库常用命令

mysql是不见 分号 不执行,分号表示结束。\c可以终止命令的输入。 1.登录数据库 mysql -u root -p然后在输入密码 root 2.查看数据库(以分号结尾) show databases; 3.创建数据库 pk create database pk; 4.使用数据库pk use pk; 5.删除数据库pk drop database…

【2023电工杯】B题人工智能对大学生学习影响的评价26页论文及python代码

【2023电工杯】B题人工智能对大学生学习影响的评价26页论文及python代码 1 题目 B题 人工智能对大学生学习影响的评价 人工智能简称AI,最初由麦卡锡、明斯基等科学家于1956年在美国达特茅斯学院开会研讨时提出。 2016年,人工智能AlphaGo 4:1战胜韩国…