Dataflow 是一项 Google Cloud 服务,可大规模提供统一的流式和批量数据处理。使用 Dataflow 创建数据流水线,以便从一个或多个来源读取数据、转换数据,并将数据写入目标位置。
Dataflow 的典型应用场景包括:
- 数据移动:跨子系统注入数据或复制数据。
- ETL(提取、转换和加载)工作流,用于将数据注入到数据仓库(例如 BigQuery)中。
- 为 BI 信息中心提供支持。
- 将机器学习实时应用于流式数据。
- 大规模处理传感器数据或日志数据。
Dataflow 对批处理和数据流分析使用相同的编程模型。流处理流水线可以实现非常低的延迟。您可以注入、处理和分析数量不断波动的实时数据。默认情况下,Dataflow 保证对每条记录进行正好一次处理。对于可以容忍重复项的流处理流水线,通常可以通过启用“至少一次”模式来降低费用并缩短延迟时间。
Dataflow 的优势
本部分介绍使用 Dataflow 的一些优点。
代管式
Dataflow 是一项全代管式服务。这意味着 Google 负责管理运行 Dataflow 所需的所有资源。当您运行 Dataflow 作业时,Dataflow 服务会分配工作器虚拟机池以执行流水线。您无需预配或管理这些虚拟机。作业完成或取消后,Dataflow 会自动删除虚拟机。您需要为作业使用的计算资源付费。如需详细了解费用,请参阅 Dataflow 价格。
大容量
Dataflow 旨在大规模支持批量和流式流水线。数据是并行处理的,因此工作分布在多个虚拟机中。
Dataflow 可以通过预配额外的工作器虚拟机或者根据需要关停某些工作器虚拟机来自动扩缩。它还会根据流水线的特征优化工作。例如,Dataflow 可以在虚拟机之间动态重新平衡工作,从而提高并行工作的效率。
便携
Dataflow 基于开源 Apache Beam 项目构建。Apache Beam 可让您使用特定语言的 SDK 编写流水线。Apache Beam 支持 Java、Python 和 Go SDK,以及多语言流水线。
Dataflow 执行 Apache Beam 流水线。如果您稍后决定在其他平台(例如 Apache Flink 或 Apache Spark)上运行流水线,则可以在不重写流水线代码的情况下执行此操作。
灵活
您可以将 Dataflow 用于相对简单的流水线,例如移动数据。但是,它也适用于更高级的应用,例如实时流式分析。当您从批处理转向流处理或遇到更高级的用例时,基于 Dataflow 构建的解决方案可以随着您的需求而扩展。
Dataflow 支持几种不同的方法来创建和执行流水线,具体取决于您的需求:
使用 Apache Beam SDK 编写代码。
部署 Dataflow 模板。借助模板,您可以运行预定义的流水线。例如,开发者可以创建模板,然后数据科学家可以按需部署模板。
Google 还为常见场景提供了模板库。您可以在不了解任何 Apache Beam 编程概念的情况下部署这些模板。
使用 JupyterLab 笔记本以迭代方式开发和运行流水线。
Observable
您可以通过 Google Cloud 控制台中的 Dataflow 监控界面监控 Dataflow 作业的状态。监控界面包括流水线的图形表示,其中显示了每个流水线阶段的进度和执行详情。监控界面可让您更轻松地发现瓶颈或高延迟等问题。您还可以分析 Dataflow 作业,以监控 CPU 使用率和内存分配情况。
运作方式
Dataflow 使用数据流水线模型,其中数据会经历一系列阶段。阶段可以包括从来源读取数据、转换和聚合数据,以及将结果写入目标位置。
流水线的范围可以从非常简单的处理到更复杂的处理。例如,流水线可能执行以下操作:
- 按原样将数据移动到目标位置。
- 将数据转换为对目标系统更有用的数据。
- 聚合、处理和丰富数据以供分析。
- 将数据与其他数据联接。
Apache Beam 中定义的流水线未指定流水线的执行方式。运行流水线是运行程序的作业。运行程序的目的是在特定平台上运行 Apache Beam 流水线。Apache Beam 支持多个运行程序,包括 Dataflow 运行程序。
如需将 Dataflow 与 Apache Beam 流水线搭配使用,请指定 Dataflow 运行程序。运行程序会将可执行代码和依赖项上传到 Cloud Storage 存储桶并创建 Dataflow 作业。然后,Dataflow 会分配虚拟机池来执行流水线。
下图显示了使用 Dataflow 和其他 Google Cloud 服务的典型 ETL 和 BI 解决方案:
下图显示了以下阶段:
- Pub/Sub 从外部系统注入数据。
- Dataflow 从 Pub/Sub 读取数据并将其写入 BigQuery。在此阶段,Dataflow 可能会转换或聚合数据。
- BigQuery 充当数据仓库,使数据分析师能够对数据运行临时查询。
- Looker 根据 BigQuery 中存储的数据提供实时 BI 数据洞见。
对于基本的数据移动场景,您可以运行 Google 提供的模板。某些模板支持以 JavaScript 编写的用户定义的函数 (UDF)。借助 UDF,您可以将自定义处理逻辑添加到模板。对于更复杂的流水线,请从 Apache Beam SDK 开始。
后续步骤
- 如需详细了解 Apache Beam,请参阅 Apache Beam 的编程模型。
- 安装 Apache Beam SDK。
- 按照 Java 快速入门、Python 快速入门或 Go 快速入门创建您的第一个流水线。
- 通过使用 Dataflow 模板创建流处理流水线来了解 Dataflow 模板。