beam & 功能
2016/03/17
澄清和规范 Runner 功能
随着初始代码发布的完成(Dataflow SDK 和 Runner,Flink Runner,Spark Runner)以及对 Storm、Hadoop 和 Gearpump(以及其他)的 Runner 实现表现出兴趣,我们希望开始解决 Apache Beam(孵化器)社区中一个重要的问题:每个 Runner 将能够支持哪些功能?
虽然我们希望有一个世界,所有 Runner 都支持 Beam 模型中包含的全部语义套件(以前称为 Dataflow 模型),但实际上,总是会有一些 Runner 无法提供某些功能。例如,基于 Hadoop 的 Runner 本质上是批处理的,可能无法(轻松地)实现对无界集合的支持。但是,这并不妨碍它对大量用例非常有用。在其他情况下,一个 Runner 提供的实现可能具有与另一个 Runner 提供的实现略有不同的语义(例如,即使当前的 Runner 套件都支持 exactly-once 传递保证,Apache Samza Runner(这是一个受欢迎的补充)目前只支持 at-least-once)。
为了帮助澄清这些问题,我们一直在努力为所有现有的 Runner 列出 Beam 模型的关键特征,并将它们分类到模型解决的四个关键问题周围:什么 / 哪里 / 何时 / 如何(如果您不熟悉这些问题,您可能需要阅读 Streaming 102 了解概述)。此表将随着模型的演变、我们理解的增长以及 Runner 的创建或功能的添加而不断更新。
下面是目前对现有 Runner 功能的理解摘要(有关完整详细信息、描述和 Jira 链接,请参见 实时版本);由于集成仍在进行中,因此整个系统尚未处于完全稳定、可用的状态。但这将在不久的将来发生改变,当第一个受支持的 Beam 1.0 版本发布时,我们将在本博客上大声宣布。
同时,这些表格应该有助于澄清我们对近期情况的预期,并帮助指导对现有 Runner 能力以及 Runner 实现者将要处理的功能的预期。
正在计算什么? | |||||||
---|---|---|---|---|---|---|---|
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
ParDo | |||||||
GroupByKey | |||||||
Flatten | |||||||
Combine | |||||||
复合转换 | |||||||
侧输入 | |||||||
源 API | |||||||
聚合器 | |||||||
键控状态 | |||||||
事件时间在何处? | |||||||
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
全局窗口 | |||||||
固定窗口 | |||||||
滑动窗口 | |||||||
会话窗口 | |||||||
自定义窗口 | |||||||
自定义合并窗口 | |||||||
时间戳控制 | |||||||
处理时间何时? | |||||||
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
可配置触发 | |||||||
事件时间触发器 | |||||||
处理时间触发器 | |||||||
计数触发器 | |||||||
[元]数据驱动的触发器 | |||||||
复合触发器 | |||||||
允许的延迟 | |||||||
计时器 | |||||||
细化如何关联? | |||||||
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
丢弃 | |||||||
累积 | |||||||
累积和撤回 | |||||||
有界可拆分 DoFn 支持状态 | |||||||
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
基础 | |||||||
侧输入 | |||||||
可拆分 DoFn 发起的检查点 | |||||||
动态拆分 | |||||||
捆绑最终化 | |||||||
无界可拆分 DoFn 支持状态 | |||||||
Beam 模型 | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
基础 | |||||||
侧输入 | |||||||
可拆分 DoFn 发起的检查点 | |||||||
动态拆分 | |||||||
捆绑最终化 | |||||||