知识卡片
统一批处理与流处理需要的三项能力
内容
针对[[Lambda架构的核心思想及其三个实际问题]]暴露出的重复维护成本,更新的思路是让批处理计算(重新处理历史数据)和流计算(事件到达即处理)在同一系统里实现,不必并行跑两套系统。实现这一点需要三项正变得越来越普遍的能力:一是用处理最近事件流的同一个处理引擎重播历史事件的能力,比如[[重播旧消息让基于日志的消息传递更接近批处理哲学]]所属的基于日志的消息代理天然能重播消息,某些流处理器也能直接从HDFS等分布式文件系统读取输入作为”批处理”;二是流处理器要具备恰好一次语义(与批处理一样,需要能丢弃任何失败任务的部分输出);三是按事件时间而非处理时间进行窗口化的工具——因为在重新处理历史事件时,处理时间毫无意义,Apache Beam这类API可以在Flink或Google Cloud Dataflow上表达这种按事件时间的计算。发散:这三项能力合起来,本质是把”批”重新定义为”流的一种特殊情况”(有界的流),而不是把流当成批的加速版,这个视角上的翻转,是理解统一批流处理系统设计初衷的关键。
参考来源
- 位置:《数据密集型应用系统设计》第十二章《数据系统的未来》"统一批处理和流处理"(源文件:_epub-src/ch12_split_000.html)
- 结论依据:原文列举重播历史事件能力、恰好一次语义、按事件时间窗口化三项统一批处理与流处理所需的功能,并给出基于日志消息代理与Apache Beam的具体实现例子,直接支撑本卡片结论。
- 原始内容:通过处理最近事件流的相同处理引擎来重播历史事件的能力……对于流处理器来说,恰好一次语义……按事件时间进行窗口化的工具,而不是按处理时间进行窗口化。