文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Apache Flink 漫谈系列 - 时间

2024-12-13 22:11

关注

Apache Flink 为什么需要时间

Apache Flink 在进行Streaming计算时为什么需要时间?回答这个问题我们先看看Streaming和Batch的一个明显区别,即 从数据集的角度看,Streaming是一个Unbounded的数据集,Batch是一个Bounded的数据集。那么我们如何对一个UnBounded的数据集上面进行计算呢?我们总不能等数据都流完在计算结果吧?当然不能,因为流是UnBounded的,永远没有结束。那怎么办?业界一个通用的解决手段就是Window机制。将Streaming的数据看做是一系列的events,每一个event都是一条Streaming数据记录,都有自己产生的时间,也有在Streaming的算子处理的时间,那么Window就可以根据event产生时间或者event被处理的时间进行分组。所以 Time 是Steaming计算必不可少的数据属性。

在大多数Streaming处理场景中,Event的顺序很重要,并且通常Event到达数据处理算子的顺序与这些Event在现实世界中实际发生的时间不同。那么记录Event在设备中产生的时间将为在Apache Flink中如实的按照Event的产生时间的顺序进行数据处理提供了机会。

时间类型

如上图所示按照Event的产生时间、进入Apache Flink系统时间和被处理的时间三个时间点划分,在Blink系统中同一个时间或者说是数据流上的数据可以有的时间属性有三种:

Event Time

Event Time 是每个Event在其生产设备上发生的时间。这段时间通常嵌入记录中,然后进入Apache Flink,并且可以从记录中提取事件时间戳。

Event Time即使在无序事件,延迟事件或从备份或持久性日志中重放数据时,也能提供正确的结果。在Streaming数据处理期间,时间的进度取决于数据,而不是挂在任何系统时钟上。后续章节要介绍的Watermark就是基于Event Time产生的,Apache Flink系统正是利用Event Time和Watermark机制处理数据乱序问题的(后续章节会详细介绍).

Processing Time

Processing Time 是指执行相应操作的机器的系统时间。

当Streaming计算基于Processing Time时候,所有基于时间的操作(如Time Window)将使用运行相应算子的机器的系统时钟。

Processing Time是最简单的时间概念,它提供了最佳的性能和最低的延迟。然而,在分布式和异步环境中,Processing Time并不能提供确定性,因为它容易受到Event到达系统的速度(例如来自消息队列)以及记录在Apache Flink系统内部的处理先后顺序的影响.

Ingestion Time

Ingestion time是事件进入Apache Flink的时间。在Source算子处产生,每个记录都将源的当前时间作为时间戳记,而基于时间的算子(如Time Window)会引用该时间戳记。

Ingestion Time在概念上位于Event Time和Processing Time之间。

Ingestion Time与Processing Time相比,它的成本稍高一些,但可提供更可预测的结果:由于摄取时间使用稳定的时间戳(在源处分配一次),不受系统内部处理Event的先后顺序和数据传输的延时所影响.

Ingestion Time与Event Time相比,Ingestion Time方式无法处理任何乱序事件或迟后数据,Ingestion Time 在Apache Flink内部机制上与Event Time非常相似,具有自动时间戳分配和自动水印生成功能。

Apache Flink 目前使用的时间

目前Apache Flink SQL 层面向用户开发的时间类型是 Event Time和Processing Time.

小结

本篇介绍了Apache Flink的内部的时间概念,在Apache Flink内部有Event Time , Processing Time和Ingestion time三种时间类型,目前向用户开放的是Event Time和Processing Time 两种。时间在Streaming计算中至关重要,时间是数据分组的主要依据,时间也是Streaming计算中处理数据延时和数据乱序的核心元素。

作者介绍

孙金城,51CTO社区编辑,Apache Flink PMC 成员,Apache Beam Committer,Apache IoTDB PMC 成员,ALC Beijing 成员,Apache ShenYu 导师,Apache 软件基金会成员。关注技术领域流计算和时序数据存储。

来源:孙金城内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯