Dataflow Prime 是一个适用于 Apache Beam 流水线的无服务器数据处理平台。Dataflow Prime 基于 Dataflow,使用计算和状态分离的架构。在以下情况下,Dataflow Prime 可能会提高流水线效率:
- 流水线会受益于纵向自动扩缩。
Dataflow Prime 支持批量和流式流水线。默认情况下,Dataflow Prime 使用 Dataflow Shuffle 和 Dataflow Runner v2 来处理批量流水线。
SDK 版本支持
Dataflow Prime 支持以下 Apache Beam SDK:
Apache Beam Python SDK 2.21.0 或更高版本
Apache Beam Java SDK 2.30.0 或更高版本
Apache Beam Go SDK 2.44.0 或更高版本
如需下载 SDK 软件包或阅读版本说明,请参阅 Apache Beam 下载。
Dataflow Prime 功能
下面列出了针对不同类型的流水线支持的 Dataflow Prime 功能:
- 纵向自动扩缩(内存)。Python、Java 和 Go 版本支持流式流水线。
- 适配(资源提示)。Python 和 Java 版本支持批量流水线。
- 作业可视化工具。Python 和 Java 版本支持批量流水线。
- 智能建议。Python 和 Java 版本支持流式流水线和批量流水线。
- 数据流水线。Python 和 Java 版本支持流式流水线和批量流水线。
非 Dataflow Prime 作业也支持作业可视化工具、智能建议和数据流水线功能。
纵向自动扩缩
此功能会自动调整 Dataflow 工作器虚拟机的可用内存以满足流水线的需求,并有助于防止内存不足错误。在 Dataflow Prime 中,纵向自动扩缩与横向自动扩缩协同工作,动态扩缩资源。
如需了解详情,请参阅纵向自动扩缩。
适配
此功能使用资源提示(Apache Beam 的一项功能)。通过使用资源提示,您可以指定整个流水线或流水线的特定步骤的资源要求。此功能允许您为流水线的不同步骤创建自定义工作器。通过适配功能,您可以指定流水线资源以最大限度地提高效率、降低运营成本并避免内存不足和其他资源错误。它支持内存和 GPU 资源提示。
适配功能需要 Apache Beam 2.30.0 或更高版本。
如需了解详情,请参阅适配。
作业可视化工具
此功能让您可以查看 Dataflow 作业的性能,并通过找到低效代码(包括并行化瓶颈)来优化作业的性能。在 Google Cloud 控制台中,您可以点击作业页面中的任何 Dataflow 作业来查看作业的详细信息。您还可以查看与流水线的每个阶段关联的步骤列表。
如需了解详情,请参阅执行详情。
智能建议
此功能可让您根据作业详情页面的诊断标签页中提供的建议对流水线进行优化和问题排查。在 Google Cloud 控制台中,您可以点击作业页面中的任何 Dataflow 作业来查看作业的详细信息。
如需了解详情,请参阅建议和诊断。
数据流水线
此功能可让您安排作业、观察资源利用率、跟踪流式数据的数据新鲜度目标以及优化流水线。
如需了解详情,请参阅使用数据流水线。
配额和限制要求
Dataflow 和 Dataflow Prime 的配额和限制是相同的。 如需了解详情,请参阅配额和限制。
如果您选择使用 Data Pipelines,则会对配额和区域产生其他影响。
不支持的功能
Dataflow Prime 不支持以下各项:
使用 Python 流水线的
--worker_machine_type
或--machine_type
标志以及 Java 流水线的--workerMachineType
来指定特定的虚拟机类型。查看或使用 SSH 登录工作器虚拟机。
Java 流水线的
OrderedListState
类。将 VPC Service Controls 与纵向自动扩缩搭配使用。如果您启用 Dataflow Prime 并在 VPC Service Controls 边界内启动新作业,则该作业会使用不具有纵向自动扩缩的 Dataflow Prime。
满足以下要求的 Java 流水线可以使用
MapState
和SetState
类:- 使用 Streaming Engine
- 使用 Apache Beam SDK 2.58.0 及更高版本
- 不使用 Runner v2
对于在上文中或在功能对比表中未明确提及的所有其他流水线选项,其执行方式在 Dataflow 和 Dataflow Prime 中相同。
使用 Dataflow Prime 之前
如需使用 Dataflow Prime,您可以重复使用现有流水线代码,还可以通过 Cloud Shell 或以编程方式启用 Dataflow Prime 选项。
Dataflow Prime 向后兼容使用 Dataflow Shuffle 的批量作业和使用 Streaming Engine 的流式作业。但是,我们建议您先使用 Dataflow Prime 测试流水线,然后再在生产环境中使用。
如果您的流式流水线在生产环境中运行,要使用 Dataflow Prime,请执行以下步骤:
停止流水线。
启用 Dataflow Prime。
重新运行流水线。
启用 Dataflow Prime
要为流水线启用 Dataflow Prime,请执行以下操作:
启用 Cloud Autoscaling API。
Dataflow Prime 使用 Cloud Autoscaling API 动态调整内存。
在流水线选项中启用 Prime。
您可以通过编程方式或使用命令行设置流水线选项。对于支持的 Apache Beam SDK 版本,请启用以下标志:
Java
--dataflowServiceOptions=enable_prime
Python
Apache Beam Python SDK 2.29.0 或更高版本:
--dataflow_service_options=enable_prime
Apache Beam Python SDK 2.21.0 版到 2.28.0 版:
--experiments=enable_prime
Go
--dataflow_service_options=enable_prime
将 Dataflow Prime 与模板搭配使用
如果您使用 Dataflow 模板,则可以选择通过以下方式之一启用 Dataflow Prime:
对于从基于模板创建作业页面启动的作业,请执行以下操作:
转到基于模板创建作业页面。
在 Additional experiment 字段中,输入
enable_prime
。
对于通过命令行界面从模板启动的作业,请传递
--additional-experiments=enable_prime
标志。如需在创建模板时启用 Dataflow Prime,请设置
--experiments=enable_prime
标志。
在 Apache Beam 笔记本中使用 Dataflow Prime
如果您使用的是 Apache Beam 笔记本,则可以使用 PipelineOptions
以编程方式启用 Dataflow Prime:
options = pipeline_options.PipelineOptions(
flags=[],
dataflow_service_options=['enable_prime'],
)
如需详细了解如何在笔记本中设置 Dataflow 选项,请参阅从在笔记本中创建的流水线启动 Dataflow 作业。
Dataflow 和 Dataflow Prime 的功能比较
下表比较了 Dataflow 的两个变体的可用功能。
功能 | Dataflow Prime | Dataflow |
---|---|---|
Runner v2 | 默认功能,无法为批量作业关闭,并且对于流式作业是可选的 | 默认功能,有用于为批量作业关闭此功能的选项,并且对于流式作业是可选的 |
用于批量作业的 Dataflow Shuffle | 默认功能,有可用于关闭该功能的选项 | 默认功能,有可用于关闭该功能的选项 |
用于流式作业的 Streaming Engine | Java 流水线的可选功能,始终为 Python 流水线启用 | Java 流水线的可选功能,Python 流水线自 2.45.0 起始终处于启用状态 |
横向自动扩缩 | 默认功能,具有可用于关闭该功能的选项 | 默认功能,具有可用于关闭该功能的选项 |
纵向自动扩缩 | 默认功能,具有可用于关闭该功能的选项 | 不适用 |
适配 | 可选功能 | 可选功能 |
结算 | 无服务器结算 | 标准结算 |
后续步骤
- 了解 Dataflow 配额。
- 了解如何设置流水线选项。
- 查看 Java 和 Python 流水线的可用流水线选项。
- 详细了解 Dataflow Prime 的自动调节功能。
- 详细了解 Dataflow GPU。