配置 Flex 模板

本页面介绍了 Dataflow Flex 模板所需的 Dockerfile 环境变量和支持的流水线参数。

设置所需的 Dockerfile 环境变量

如果要为 Flex 模板作业创建自己的 Docker 文件,您必须指定以下环境变量:

Java

您必须在 Dockerfile 中指定 FLEX_TEMPLATE_JAVA_MAIN_CLASSFLEX_TEMPLATE_JAVA_CLASSPATH

Python

您必须在 Dockerfile 中指定以下内容:FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEFLEX_TEMPLATE_PYTHON_PY_FILEFLEX_TEMPLATE_PYTHON_PY_OPTIONSFLEX_TEMPLATE_PYTHON_SETUP_FILE

例如,我们在 Streaming in Python Flex 模板教程中设置了以下环境变量:

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"

更改基础映像

您必须使用 Google 提供的基础映像来使用 Docker 打包容器。从 Flex 模板基础映像参考中选择最新版本名称。请勿选择 latest

请按以下格式指定基础映像:

gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME

替换以下内容:

指定流水线参数

流水线选项是执行参数,用于配置运行 Dataflow 作业的方式和位置。您可以使用 gcloud 命令行工具为 Flex 模板作业设置以下 Dataflow 流水线选项:

Java

字段 类型 说明 默认值
gcpTempLocation String 用于暂存临时文件的 Cloud Storage 路径。必须是有效的 Cloud Storage 网址,且以 gs:// 开头。
numWorkers int 执行流水线时使用的 Google Compute Engine 初始实例数。此选项决定了 Dataflow 服务在作业开始时启动的工作器数。 如果未指定,Dataflow 服务将确定合适的工作器数。
maxNumWorkers int 在您的流水线执行期间为其提供的 Compute Engine 实例的最大数量。请注意,此值可超过 numWorkers 指定的工作器初始数量,其目的是允许您的作业以自动方式或其他方式纵向扩容。 如果未指定,Dataflow 服务将确定合适的工作器数。
numberOfWorkerHarnessThreads int 每个工作器使用的线程数。 如果未指定,Dataflow 服务将确定每个工作器合适的线程数。
workerRegion String

指定用于启动工作器实例以运行您的流水线的 Compute Engine 区域。此选项用于在与用于部署、管理和监控作业的 region 不同的位置运行工作器。workerRegion 的地区是自动分配的。

注意:此选项不能与 workerZonezone 一起使用。

如果未设置,则默认为为 region 设置的值。
workerZone String

指定用于启动工作器实例以运行您的流水线的 Compute Engine 地区。此选项用于在与用于部署、管理和监控作业的 region 不同的位置运行工作器。

注意:此选项不能与 workerRegionzone 一起使用。

如果指定了 regionworkerRegionworkerZone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。
zone String (已弃用)对于 Apache Beam SDK 2.17.0 或更早版本,这指定了用于启动工作器实例以运行您的流水线的 Compute Engine 地区。 如果指定了 regionzone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。
dataflowKmsKey String 指定用于对静态数据进行加密的 CMEK(客户管理的加密密钥)。您可以通过 Cloud KMS 控制加密密钥。您还必须指定 gcpTempLocation 才能使用此功能。 如果未指定,则 Dataflow 会使用默认的 Google Cloud 加密(而不是 CMEK)。
network String Compute Engine 网络,用于启动 Compute Engine 实例以运行流水线。了解如何指定您的网络 如果未设置,Google Cloud 会假设您打算使用名为 default 的网络。
subnetwork String Compute Engine 子网,用于启动 Compute Engine 实例以运行流水线。了解如何指定您的子网 Dataflow 服务确定默认值。
enableStreamingEngine boolean 指定是否启用 Dataflow Streaming Engine;如果启用,则为 true。通过启用 Streaming Engine,您可以在 Dataflow 服务后端运行流处理流水线的相关步骤,从而节省 CPU、内存和 Persistent Disk 存储资源。 默认值为 false。这意味着您的流处理流水线的步骤完全在工作器虚拟机上执行。
serviceAccount String 使用 my-service-account-name@<project-id>.iam.gserviceaccount.com 格式指定用户管理的控制器服务帐号。如需了解详情,请参阅 Cloud Dataflow 安全性和权限页面的控制器服务帐号部分。 如果未设置,则工作器会将您项目的 Compute Engine 服务帐号用作控制器服务帐号。
workerMachineType String

Dataflow 在启动工作器虚拟机时使用的 Compute Engine 机器类型。您可以使用任何可用的 Compute Engine 机器类型系列以及自定义机器类型。

为获得最佳效果,请使用 n1 机器类型。Dataflow 服务等级协议不支持共享核心机器类型(例如 f1g1 系列工作器)。

请注意,Dataflow 根据工作器中 vCPU 的数量和内存 GB 数进行计费。计费与机器类型系列无关。

如果您未设置此选项,Dataflow 服务将根据您的作业选择机器类型。

Python

字段 类型 说明 默认值
temp_location str 用于暂存临时文件的 Cloud Storage 路径。必须是有效的 Cloud Storage 网址,且以 gs:// 开头。 如果未设置,则默认为 staging_location 的值。您必须至少指定 temp_locationstaging_location 才能在 Google 云端运行流水线。
num_workers int 执行流水线时使用的 Compute Engine 实例数。 如果未指定,Dataflow 服务将确定合适的工作器数。
max_num_workers int 在您的流水线执行期间为其提供的 Compute Engine 实例的最大数量。请注意,此值可超过 num_workers 指定的工作器初始数量,其目的是允许您的作业以自动方式或其他方式纵向扩容。 如果未指定,Dataflow 服务将确定合适的工作器数。
number_of_worker_harness_threads int 每个工作器使用的线程数。 如果未指定,Dataflow 服务将确定每个工作器合适的线程数。 要使用此参数,您还需要使用 --experiments=use_runner_v2 标志。
worker_region String

指定用于启动工作器实例以运行您的流水线的 Compute Engine 区域。此选项用于在与用于部署、管理和监控作业的 region 不同的位置运行工作器。worker_region 的地区是自动分配的。

注意:此选项不能与 worker_zonezone 一起使用。

如果未设置,则默认为为 region 设置的值。
worker_zone String

指定用于启动工作器实例以运行您的流水线的 Compute Engine 地区。此选项用于在与用于部署、管理和监控作业的 region 不同的位置运行工作器。

注意:此选项不能与 worker_regionzone 一起使用。

如果指定了 regionworker_regionworker_zone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。
zone str (已弃用)对于 Apache Beam SDK 2.17.0 或更早版本,这指定了用于启动工作器实例以运行您的流水线的 Compute Engine 地区。 如果指定了 regionzone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。
dataflow_kms_key str 指定用于对静态数据进行加密的 CMEK(客户管理的加密密钥)。您可以通过 Cloud KMS 控制加密密钥。您还必须指定 temp_location 才能使用此功能。 如果未指定,则 Dataflow 会使用默认的 Google Cloud 加密(而不是 CMEK)。
network str Compute Engine 网络,用于启动 Compute Engine 实例以运行流水线。了解如何指定您的网络 如果未设置,Google Cloud 会假设您打算使用名为 default 的网络。
subnetwork str Compute Engine 子网,用于启动 Compute Engine 实例以运行流水线。了解如何指定您的子网 Dataflow 服务确定默认值。
enable_streaming_engine bool 指定是否启用 Dataflow Streaming Engine;如果启用,则为 true。通过启用 Streaming Engine,您可以在 Dataflow 服务后端运行流处理流水线的相关步骤,从而节省 CPU、内存和 Persistent Disk 存储资源。 默认值为 false。这意味着您的流处理流水线的步骤完全在工作器虚拟机上执行。
service_account_email str 使用 my-service-account-name@<project-id>.iam.gserviceaccount.com 格式指定用户管理的控制器服务帐号。如需了解详情,请参阅 Cloud Dataflow 安全性和权限页面的控制器服务帐号部分。 如果未设置,则工作器会将您项目的 Compute Engine 服务帐号用作控制器服务帐号。
machine_type str

Dataflow 在启动工作器虚拟机时使用的 Compute Engine 机器类型。您可以使用任何可用的 Compute Engine 机器类型系列以及自定义机器类型。

为获得最佳效果,请使用 n1 机器类型。Dataflow 服务等级协议不支持共享核心机器类型(例如 f1g1 系列工作器)。

请注意,Dataflow 根据工作器中 vCPU 的数量和内存 GB 数进行计费。计费与机器类型系列无关。

如果您未设置此选项,Dataflow 服务将根据您的作业选择机器类型。

后续步骤