Dataflow 概览

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 解决方案:

使用 Dataflow 的 ETL 和 BI 解决方案示意图

下图显示了以下阶段:

  1. Pub/Sub 从外部系统注入数据。
  2. Dataflow 会从 Pub/Sub 读取数据并将其写入 BigQuery。在此阶段,Dataflow 可能会转换或汇总数据。
  3. BigQuery 充当数据仓库,可让数据分析师对数据运行临时查询。
  4. Looker 可根据存储在 BigQuery 中的数据提供实时 BI 数据分析。

对于基本的数据移动场景,您可以运行 Google 提供的模板。某些模板支持以 JavaScript 编写的用户定义的函数 (UDF)。借助 UDF,您可以将自定义处理逻辑添加到模板。对于更复杂的流水线,请从 Apache Beam SDK 开始。

后续步骤