这是我参与「第四届青训营 」笔记创作活动的第四天
流式计算VS批式计算
数据价值:实时性越高,数据价值越高
| 特性 | 批式计算 | 流式计算 |
|---|---|---|
| 数据存储 | HDFS、Hive | Kafka、Pulsar |
| 数据时效性 | 天级别 | 分钟级别 |
| 准确性 | 精准 | 精准和时效性之间取舍 |
| 典型计算引擎 | Hive、Spark、Flink | Flink |
| 计算模型 | Exactly-Once | At Least Once/Exactly Once |
| 资源模型 | 定时调度 | 长期持有 |
| 主要场景 | 离线天级别数据报表 | 实时数仓、实时营销、实时风控 |
小时级批处理
将调度级别下降到小时级,每小时一次调度,理论上可以实现更实时的数仓,但是每次周期处理调度外还有申请、释放等过程,比较消耗资源。 一般线上数仓任务,计算时间从几分钟到几小时不等,分布不均匀,数仓的建模是分层的,三层五层甚至七层都存在,若所有的数据从产生到计算完成都要求在一个小时内,在很多场景下是做不到的。
处理时间窗口
实时计算:处理时间窗口 数据实时流动,实时计算,窗口结束直接发送结果,不需要周期调度任务。
处理时间VS事件时间
处理时间:数据在流式计算系统中真正处理时所在机器的当前时间。
事件时间:数据产生的时间,比如客户端、传感器、后端代码等上报数据时的时间。
事件时间窗口
实时计算:事件时间窗口 数据实时进入到真实事件发生的窗口中进行计算,可以有效的处理数据延迟和乱序。
Window
基本功能
Window分类
典型的Window:
Tumble Window(滚动窗口)
Sliding Window(滑动窗口)
Session Window(会话窗口)
其它Window:
全局Window
Count Window
累计窗口
滚动窗口
窗口划分:
每个 key 单独划分
每条数据只会属于一个窗口
窗口触发:
Window 结束时间到达的时候一次性触发
滑动窗口
窗口划分:
每个 key 单独划分
每条数据可能会属于多个窗口
窗口触发:
Window 结束时间到达的时候一次性触发
会话窗口
窗口划分:
每个key单独划分
每条数据会单独划分为一个窗口,如果window之间有交集,则会对窗口进行merge
窗口触发:
Window结束时间到达的时候一次性触发