流计算中的Windows计算

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 流计算中的Windows计算

💨流式计算与批式计算区别

✔数据存储

流式计算:Kafka、Pulsar批式计算:HDFS、Hive

✔数据时效性

流式计算:分钟级别批式计算:天级别

✔准确性

流式计算:精准和时效性之间取舍批式计算:精准

✔典型计算引擎

流式计算:Flink批式计算:Hive、Spark、 Flink

✔计算模型

流式计算:At Least Once / Exactly Once批式计算:Exactly-Once

✔资源模型

流式计算:长期持有批式计算:定时调度

✔主要场景

流式计算:实时数仓、实时营销、实时风控批式计算:离线天级别数据报表

🍳小结

批式计算一般是T+1的数仓架构 数据实时性越高,数据的价值越高 实时计算分为处理时间和事件时间 事件时间需要Watermark配合来处理乱序

自我思考

  • 批式计算是一种批量、高时延、主动发起的计算。
  • 流计算是一种持续、低时延、事件触发的计算作业。

💨流式计算中的核心功能

✨Watermark

🎈什么是Watermark

表示系统认为的 当前真实的事件时间

WaterMark翻译为水位线,什么时候用到水位线呢? 比如说水控在顺水的时候达到紧梯就会触发,若不放水就可以发现危险的现状。

在spark程序划分成窗口的时候,主要是衡量什么时候触发,这也是需要用到的水位线,其实它是来判断水位窗口触发的机制,在这个窗口水位线会不停的增加。

其实水位线有两种方式获取,一种是根据数据时间来提取,另一种是定期生成水位线。

当我们输入的数据有大也有小的,它就会用这个分区最大的Eventime作为它的水位线。

那么这个水位线是怎么计算出来的? 实水位线还有一个作用,让窗口延迟发,举一个例子,我们在生产环境中,拉数据是从中间件拉取出来的,如kafka。

在kakfa下有多个分区,由生产者写入进入,在生产者有2个或多个写,当一对一写完,它还会切换写,在kafka里如果只有一个分区它是有序的,但是多个分区就无法保证它是有序的。

🎈如何产生Watermark

可以通过Watermark Generator来生成

通常,在接收到source的数据后,应该立刻生成watermark;但是,也可以在source后应用简单的map或者filter操作,再生成watermark。

🎈如何传递Watermark

取上游所有subtask的最小值

🎈部分数据断流: ldle Source

🎈迟到数据处理: Window 算子是丢弃; Join 算子认为跟之前的数据无法join到

自我思考

Watermark也可以让窗口延迟发,在生产环境中,拉数据是从中间件拉取出来的,如kafka。

在kakfa下有多个分区,由生产者写入进入,在生产者有2个或多个写,当一对一写完,它还会切换写,在kafka里如果只有一个分区它是有序的,但是多个分区就无法保证它是有序的。

💨Window

🎈什么是Window

在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的5分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。

🎈Window分类

✨典型的Window:

Tumble Window (滚动窗口) Sliding Window (滑动窗口)Session Window (会话窗口)

✨其它Window:

全局WindowCount Window累计窗口...

🍳滚动窗口

窗口划分:1.每个key单独划分 2.每条数据只会属于一 个窗口窗口触发:Window结束时间到达的时候一次性触发

🍳滑动窗口

窗口划分:1.每个key单独划分 2.每条数据可能会属于多个窗口窗口触发:Window结束时间到达的时候一次性触发

🍳会话窗口

窗口划分:1.每个key单独划分 2.每条数据会单独划分为一 个窗口,如果window之间有                     交集, 则会对窗口进行merge窗口触发:Window结束时间到达的时候一次性触发

💨处理迟到数据

🎈怎么定义迟到

一条数据到来后, 会用WindowAssigner给它划分一个window, -般时间窗C是一个时间区间,比 如[10:00, 11:00),如果划分出来的window end比当前的watermark值还小,说明这个窗口已经触 发了计算了,这条数据会被认为是迟到数据。

🎈什么情况下产生迟到数据

只有事件时间下才会有迟到的数据。

🎈迟到数据默认处理

丢弃

💨Allow lateness

这种方式需要设置一个 允许迟到的时间。设置之后,窗口正常计算结 束后,不会马上清理状态,而是会多保留allowl ateness这么长时间, 在这段时间内如果还有数据到来,则继续之前的状态进行计算。

适用于: DataStream、 SQL

💨SideOutput (侧输出流)

这种方式需要对迟到数据打一个tag,然后在DataStream.上根据这 个tag获取到迟到数据流,然后业务层面自行选择进行处理。

适用于: DataStream

💨EMIT触发

✔什么叫EMIT

通常来讲,window都是在结束的时候才能输出结 果,比如1h的tumble window,只有在1个小时结 束的时候才能统一输出结果。 如果窗口比较大,比如1h或者1天,甚至于更大的话, 那计算结果输出的延迟就比较高,失去了实时计算 的意义。 EMIT输出指的是,在window没有结束的时候, 提前把window计算的部分结果输出出来。

✔怎么实现

在DataStream里面可以通过自定义Trigger来实现, Trigger的结果可以是:🚩CONTINUE🚩FIRE (触发计算, 但是不清理)🚩PURGE🚩FIRE AND PURGE

SQL也可以使用,通过配置:

table.exec.emit.early- fire.enabled=truetable.exec.emit.early-fire.delay={time}

💨Window-优化

1. Mini-batch优化解决频繁访问状态的问题

2. local-global 优化解决倾斜问题

3. Distinct 状态复用降低状态量

4. Pane 优化降低滑动窗[的状态存储量


目录
相关文章
|
存储 编译器 Windows
(int char等)数据类型的存储方式及计算取值(最全、最详细~保姆式讲解)(Windows)
M表示 大于等于1,小于2的数。(解释一下,我们在10进制里面,使用科学计数法是用一个大于等于1、小于10的数乘以10^n来表示的。类比推理一下,在2进制里面就是一个大于1、小于2的数乘以2的多少次)。
244 0
(int char等)数据类型的存储方式及计算取值(最全、最详细~保姆式讲解)(Windows)
|
3天前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
19 3
|
7天前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
|
1月前
|
边缘计算 安全 网络安全
|
1月前
|
数据安全/隐私保护 Windows
安装 Windows Server 2019
安装 Windows Server 2019
|
1月前
|
网络协议 Windows
Windows Server 2019 DHCP服务器搭建
Windows Server 2019 DHCP服务器搭建
|
1月前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建