流计算中的 Window 计算 | 青训营笔记

83 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

第四节课「流计算中的 Window 计算」的内容主要包含 4 个方面:概述、Watermark、Window、案例分析。这篇文章为概述和 Watermark 的相关内容。

概述

流式计算 VS 批式计算

数据价值:实时性越高,数据价值越大

特性流式计算批式计算
数据存储Kafka、PulsarHDFS、Hive
数据时效性分钟级别天级别
准确性精准和时效性之间取舍精准
典型计算引擎FlinkHive、Spark、Flink
计算模型At Least OnceExactly Once
资源模型长期持有定时调度
主要场景实时数仓、实时营销、实时风控离线天级别数据报表

批处理

  • 批处理模型典型的数仓架构为T+1架构,即数据计算时天级别的,当天只能看到前一天的计算结果。
  • 通常使用的计算引擎为Hive或者Spark等。计算的时候,数据是完全ready的,输入和输出都是确定性的。

实时计算

  • 数据实时流动,实时计算,窗口结束直接发送结果,不需要周期调度任务

处理时间 VS 事件时间

  • 处理时间:数据在流式计算系统中真正处理时所在机器的当前时间
  • 事件时间:数据产生的时间,比如客户端、传感器、后端代码等上报数据时的时间

Watermark

定义

当前系统认为的事件时间所在的真实时间。

产生

一般是从数据的事件时间来产生,产生策略可以灵活多样,最常见的包括使用当前事件时间的时间减去一个固定的delay,来表示可以可以容忍多长时间的乱序。

传递

类似于Checkpoint的制作过程,传递就类似于Checkpoint的barrier,上下游task之间有数据传输关系的,上游就会将watermark传递给下游;下游收到多个上游传递过来的watermark后,默认会取其中最小值来作为自身的watermark,同时它也会将自己watermark传递给它的下游。经过整个传递过程,最终系统中每一个计算单元就都会实时的知道自身当前的watermark是多少。

个人总结

对流式计算、批式计算有了更多了解,学习了处理时间、事件时间和 Watermark 等概念。

参考