本页面介绍了 Dataflow Flex 模板所需的 Dockerfile 环境变量和支持的流水线参数。
设置所需的 Dockerfile 环境变量
如果要为 Flex 模板作业创建自己的 Docker 文件,您必须指定以下环境变量:
Java
您必须在 Dockerfile 中指定 FLEX_TEMPLATE_JAVA_MAIN_CLASS
和 FLEX_TEMPLATE_JAVA_CLASSPATH
。
Python
您必须在 Dockerfile 中指定以下内容:FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
、FLEX_TEMPLATE_PYTHON_PY_FILE
、FLEX_TEMPLATE_PYTHON_PY_OPTIONS
和 FLEX_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
替换以下内容:
IMAGE_NAME
:Google 提供的基础映像VERSION_NAME
:基础映像的版本名称,请参阅 Flex 模板基础映像参考
指定流水线参数
流水线选项是执行参数,用于配置运行 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 设置的值。 |
workerZone |
String |
指定用于启动工作器实例以运行您的流水线的 Compute Engine 地区。此选项用于在与用于部署、管理和监控作业的 注意:此选项不能与 |
如果指定了 region 或 workerRegion ,workerZone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。 |
zone |
String |
(已弃用)对于 Apache Beam SDK 2.17.0 或更早版本,这指定了用于启动工作器实例以运行您的流水线的 Compute Engine 地区。 | 如果指定了 region ,zone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。 |
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 机器类型系列以及自定义机器类型。 为获得最佳效果,请使用 请注意,Dataflow 根据工作器中 vCPU 的数量和内存 GB 数进行计费。计费与机器类型系列无关。 |
如果您未设置此选项,Dataflow 服务将根据您的作业选择机器类型。 |
Python
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
temp_location |
str |
用于暂存临时文件的 Cloud Storage 路径。必须是有效的 Cloud Storage 网址,且以 gs:// 开头。 |
如果未设置,则默认为 staging_location 的值。您必须至少指定 temp_location 或 staging_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_zone |
String |
指定用于启动工作器实例以运行您的流水线的 Compute Engine 地区。此选项用于在与用于部署、管理和监控作业的 注意:此选项不能与 |
如果指定了 region 或 worker_region ,worker_zone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。 |
zone |
str |
(已弃用)对于 Apache Beam SDK 2.17.0 或更早版本,这指定了用于启动工作器实例以运行您的流水线的 Compute Engine 地区。 | 如果指定了 region ,zone 将默认为相应区域的地区。您可以通过指定其他地区来替换此行为。 |
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 机器类型系列以及自定义机器类型。 为获得最佳效果,请使用 请注意,Dataflow 根据工作器中 vCPU 的数量和内存 GB 数进行计费。计费与机器类型系列无关。 |
如果您未设置此选项,Dataflow 服务将根据您的作业选择机器类型。 |