Configura plantillas flexibles

En esta página, se proporciona información sobre las variables de entorno de Dockerfile obligatorias y los parámetros de canalización compatibles con las plantillas flexibles de Dataflow.

Configura variables de entorno de Dockerfile obligatorias

Si deseas crear tu propio archivo de Docker para un trabajo de plantilla flexible, debes especificar las siguientes variables de entorno:

Java

Debes especificar FLEX_TEMPLATE_JAVA_MAIN_CLASS y FLEX_TEMPLATE_JAVA_CLASSPATH en tu Dockerfile.

Python

Debes especificar lo siguiente en tu Dockerfile: FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS y FLEX_TEMPLATE_PYTHON_SETUP_FILE.

Por ejemplo, configuramos las siguientes variables de entorno del instructivo de transmisión en plantillas flexibles de Python:

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

Cambia la imagen base

Debes usar una imagen base que proporciona Google para empaquetar los contenedores mediante Docker. Elige el nombre de la versión más reciente de la referencia sobre las imágenes base de las plantillas de Flex. No selecciones latest.

Especifica la imagen base en el siguiente formato:

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

Reemplaza lo siguiente:

Especifica los parámetros de canalización

Las opciones de canalización son parámetros de ejecución que configuran cómo y dónde se ejecutan los trabajos de Dataflow. Puedes configurar las siguientes opciones de canalización de Dataflow para los trabajos de plantillas flexibles mediante la herramienta de línea de comandos de gcloud:

Java

Campo Tipo Descripción Valor predeterminado
gcpTempLocation String La ruta de acceso de Cloud Storage para archivos temporales. Debe ser una URL válida de Cloud Storage que comience con gs://.
numWorkers int La cantidad inicial de instancias de Google Compute Engine que se usarán cuando ejecutes tu canalización. Esta opción determina cuántos trabajadores inicia el servicio de Dataflow cuando comienza tu trabajo. Si no se especifica, el servicio de Dataflow determina una cantidad apropiada de trabajadores.
maxNumWorkers int La cantidad máxima de instancias de Compute Engine que estarán disponibles para tu canalización durante la ejecución. Ten en cuenta que puede ser mayor que la cantidad inicial de trabajadores (que especifica numWorkers para permitir que tu trabajo escale verticalmente de forma automática o no). Si no se especifica, el servicio de Dataflow determinará una cantidad adecuada de trabajadores.
numberOfWorkerHarnessThreads int La cantidad de subprocesos por agente de trabajo. Si no se especifica, el servicio de Dataflow determina una cantidad adecuada de subprocesos por trabajador.
workerRegion String

Especifica una región de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Esta opción se usa para ejecutar trabajadores en una ubicación diferente a la region que se usa con el fin de implementar, administrar y supervisar trabajos. La zona para workerRegion se asigna de forma automática.

Nota: Esta opción no se puede combinar con workerZone o zone.

Si no está configurada, se establece de manera predeterminada en el valor establecido para region.
workerZone String

Especifica una zona de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Esta opción se usa para ejecutar trabajadores en una ubicación diferente a la region que se usa con el fin de implementar, administrar y supervisar trabajos.

Nota: Esta opción no se puede combinar con workerRegion o zone.

Si especificas region o workerRegion, workerZone usa una zona predeterminada de la región correspondiente. Puedes anular este comportamiento mediante la especificación de una zona diferente.
zone String (Obsoleto) En el SDK de Apache Beam 2.17.0 o anterior, esto especificaba la zona de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Si especificas region, zone usa una zona predeterminada de la región correspondiente. Puedes anular este comportamiento mediante la especificación de una zona diferente.
dataflowKmsKey String Especifica la clave de encriptación administrada por el cliente (CMEK) que se utiliza para encriptar datos en reposo. Puedes controlar la clave de encriptación a través de Cloud KMS. También debes especificar gcpTempLocation para usar esta función. Si no se especifica, Dataflow usa la encriptación de Google Cloud predeterminada en lugar de una CMEK.
network String La red de Compute Engine para iniciar instancias de Compute Engine a fin de ejecutar tu canalización. Consulta cómo especificar tu red. Si no se establece, Google Cloud supone que tienes la intención de usar una red llamada default.
subnetwork String La subred de Compute Engine para iniciar instancias de Compute Engine a fin de ejecutar tu canalización. Consulta cómo especificar tu subred. El servicio de Dataflow determina el valor predeterminado.
enableStreamingEngine boolean Especifica si Streaming Engine de Dataflow está habilitado o no; es verdadero si está habilitado. Habilitar Streaming Engine te permite ejecutar los pasos de tu canalización de transmisión en el backend del servicio de Dataflow y conservar así los recursos de CPU, memoria y almacenamiento de Persistent Disk. El valor predeterminado es false. Esto significa que los pasos de tu canalización de transmisión se ejecutan por completo en las VM de trabajador.
serviceAccount String Especifica una cuenta de servicio de controlador administrada por el usuario, mediante el formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Para obtener más información, consulta la sección Cuenta de servicio del controlador de la página de seguridad y permisos de Cloud Dataflow. Si no se configura, los trabajadores usan la cuenta de servicio de Compute Engine de tu proyecto como la cuenta de servicio del controlador.
workerMachineType String

El tipo de máquina de Compute Engine que usa Dataflow cuando inicia las VM de trabajador. Puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como los tipos personalizados de máquinas.

Para obtener mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de la serie f1 y g1, no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

Ten en cuenta que Dataflow factura por la cantidad de CPU virtuales y GB de memoria en los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

El servicio de Dataflow elegirá el tipo de máquina en función de tu trabajo si no configuras esta opción.

Python

Campo Tipo Descripción Valor predeterminado
temp_location str La ruta de acceso de Cloud Storage para archivos temporales. Debe ser una URL válida de Cloud Storage que comience con gs://. Si no está configurado, se establece de manera predeterminada en el valor de staging_location. Debes especificar, como mínimo, uno de los valores temp_location o staging_location para ejecutar tu canalización en Google Cloud.
num_workers int La cantidad de instancias de Compute Engine que se usarán cuando ejecutes tu canalización. Si no se especifica, el servicio de Dataflow determinará una cantidad adecuada de trabajadores.
max_num_workers int La cantidad máxima de instancias de Compute Engine que estarán disponibles para tu canalización durante la ejecución. Ten en cuenta que puede ser mayor que la cantidad inicial de trabajadores (que especifica num_workers para permitir que tu trabajo escale verticalmente de forma automática o no). Si no se especifica, el servicio de Dataflow determinará una cantidad adecuada de trabajadores.
number_of_worker_harness_threads int La cantidad de subprocesos por agente de trabajo. Si no se especifica, el servicio de Dataflow determina una cantidad adecuada de subprocesos por trabajador. Para usar este parámetro, también debes usar la marca --experiments=use_runner_v2
worker_region String

Especifica una región de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Esta opción se usa para ejecutar trabajadores en una ubicación diferente a la region que se usa con el fin de implementar, administrar y supervisar trabajos. La zona para worker_region se asigna de forma automática.

Nota: Esta opción no se puede combinar con worker_zone o zone.

Si no está configurada, se establece de manera predeterminada en el valor establecido para region.
worker_zone String

Especifica una zona de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Esta opción se usa para ejecutar trabajadores en una ubicación diferente a la region que se usa con el fin de implementar, administrar y supervisar trabajos.

Nota: Esta opción no se puede combinar con worker_region o zone.

Si especificas region o worker_region, worker_zone usa una zona predeterminada de la región correspondiente. Puedes anular este comportamiento mediante la especificación de una zona diferente.
zone str (Obsoleto) En el SDK de Apache Beam 2.17.0 o anterior, esto especificaba la zona de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. Si especificas region, zone usa una zona predeterminada de la región correspondiente. Puedes anular este comportamiento mediante la especificación de una zona diferente.
dataflow_kms_key str Especifica la clave de encriptación administrada por el cliente (CMEK) que se utiliza para encriptar datos en reposo. Puedes controlar la clave de encriptación a través de Cloud KMS. También debes especificar temp_location para usar esta función. Si no se especifica, Dataflow usa la encriptación de Google Cloud predeterminada en lugar de una CMEK.
network str La red de Compute Engine para iniciar instancias de Compute Engine a fin de ejecutar tu canalización. Consulta cómo especificar tu red. Si no se establece, Google Cloud supone que tienes la intención de usar una red llamada default.
subnetwork str La subred de Compute Engine para iniciar instancias de Compute Engine a fin de ejecutar tu canalización. Consulta cómo especificar tu subred. El servicio de Dataflow determina el valor predeterminado.
enable_streaming_engine bool Especifica si Streaming Engine de Dataflow está habilitado o no; es verdadero si está habilitado. Habilitar Streaming Engine te permite ejecutar los pasos de tu canalización de transmisión en el backend del servicio de Dataflow y conservar así los recursos de CPU, memoria y almacenamiento de Persistent Disk. El valor predeterminado es false. Esto significa que los pasos de tu canalización de transmisión se ejecutan por completo en las VM de trabajador.
service_account_email str Especifica una cuenta de servicio de controlador administrada por el usuario, mediante el formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Para obtener más información, consulta la sección Cuenta de servicio del controlador de la página de seguridad y permisos de Cloud Dataflow. Si no se configura, los trabajadores usan la cuenta de servicio de Compute Engine de tu proyecto como la cuenta de servicio del controlador.
machine_type str

El tipo de máquina de Compute Engine que usa Dataflow cuando inicia las VM de trabajador. Puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como los tipos personalizados de máquinas.

Para obtener mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de la serie f1 y g1, no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

Ten en cuenta que Dataflow factura por la cantidad de CPU virtuales y GB de memoria en los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

El servicio de Dataflow elegirá el tipo de máquina en función de tu trabajo si no configuras esta opción.

¿Qué sigue?