Usa Dataflow Runner V2

Cuando usas Dataflow para ejecutar la canalización, su ejecutor sube el código y las dependencias de la canalización a un bucket de Cloud Storage y crea un trabajo de Dataflow. Este trabajo de Dataflow ejecuta la canalización en recursos administrados en Google Cloud.

  • Para las canalizaciones por lotes que usan las versiones 2.54.0 o posteriores del SDK de Apache Beam para Java, Runner v2 está habilitado de forma predeterminada.
  • Para las canalizaciones que usan el SDK de Java de Apache Beam, se requiere Runner v2 cuando se ejecutan canalizaciones de varios lenguajes, cuando se usan contenedores personalizados o cuando se usan canalizaciones de flujo de cambios de Spanner o Bigtable. En otros casos, usa el ejecutor predeterminado.
  • Para las canalizaciones que usan las versiones 2.21.0 o posteriores del SDK de Apache Beam para Python, Runner v2 está habilitado de forma predeterminada. Para las canalizaciones que usan las versiones 2.45.0 y posteriores del SDK de Apache Beam para Python, Dataflow Runner v2 es el único ejecutor de Dataflow disponible.
  • En el SDK de Apache Beam para Go, Dataflow Runner v2 es el único ejecutor de Dataflow disponible.

Runner v2 usa una arquitectura basada en servicios que beneficia algunas canalizaciones:

Limitaciones y restricciones

Dataflow Runner v2 tiene los siguientes requisitos:

  • Dataflow Runner v2 solo está disponible en las regiones enumeradas en ubicaciones de Dataflow.
  • Dataflow Runner v2 requiere Streaming Engine para los trabajos de transmisión y Dataflow Shuffle para trabajos por lotes.
  • Debido a que Dataflow Runner v2 requiere Streaming Engine para los trabajos de transmisión, cualquier transformación de Apache Beam que requiera Dataflow Runner v2 también requiere el uso de Streaming Engine para los trabajos de transmisión. Por ejemplo, el conector de E/S de Pub/Sub Lite para el SDK de Apache Beam para Python es una transformación de varios lenguajes que requiere Dataflow Runner v2. Si intentas inhabilitar Streaming Engine para un trabajo o una plantilla que usa esta transformación, el trabajo fallará.
  • En las canalizaciones de transmisión que usan el SDK de Java de Apache Beam, no se admiten las clases MapState y SetState.
  • En las canalizaciones por lotes y de transmisión que usan el SDK de Java de Apache Beam, no se usan las clases OrderedListState y AfterSynchronizedProcessingTime.

Habilita Dataflow Runner v2

Para habilitar Dataflow Runner v2, sigue las instrucciones de configuración del SDK de Apache Beam:

Java

Dataflow Runner v2 requiere las versiones 2.30.0 o posteriores del SDK de Java de Apache Beam, aunque se recomienda usar la versión 2.44.0 o una posterior.

Para las canalizaciones por lotes que usan las versiones 2.54.0 o posteriores del SDK de Apache Beam para Java, Runner v2 está habilitado de forma predeterminada.

Para habilitar Runner v2, ejecuta tu trabajo con la siguiente marca: --experiments=use_runner_v2.

Para inhabilitar Runner v2, usa la marca --experiments=disable_runner_v2.

Python

Para las canalizaciones que usan las versiones 2.21.0 o posteriores del SDK de Apache Beam para Python, Runner v2 está habilitado de forma predeterminada.

Dataflow Runner v2 no es compatible con las versiones 2.20.0 y anteriores del SDK de Apache Beam para Python.

En algunos casos, tu canalización podría no usar Runner V2, incluso si la canalización se ejecuta en una versión del SDK compatible. En esos casos, para ejecutar el trabajo con Runner v2, usa la marca --experiments=use_runner_v2.

Si deseas inhabilitar Runner v2 y tu trabajo se identifica como el experimento auto_runner_v2, usa la marca --experiments=disable_runner_v2. Inhabilitar el ejecutor v2 no es compatible con las versiones 2.45.0 y posteriores del SDK de Apache Beam para Python.

Go

Dataflow Runner v2 es el único ejecutor de Dataflow disponible para el SDK de Apache Beam en Go. Runner v2 está habilitado de forma predeterminada.

Supervisa tu trabajo

Usa la interfaz de supervisión para ver las métricas de los trabajos de Dataflow, como el uso de memoria, el uso de CPU y mucho más.

Los registros de VM de trabajador están disponibles a través del Explorador de registros y la interfaz de supervisión de Dataflow. Los registros de las VM de trabajador incluyen registros del proceso de aprovechamiento del ejecutor y de los procesos del SDK. Puedes usar los registros de VM para solucionar problemas de tu trabajo.

Soluciona problemas de Runner v2

Para solucionar problemas de trabajos con Dataflow Runner v2, sigue los pasos para solucionar problemas de canalizaciones estándar. En la siguiente lista, se proporciona información adicional sobre cómo funciona Dataflow Runner v2:

  • Los trabajos de Dataflow Runner v2 ejecutan dos tipos de procesos en la VM de trabajador: el proceso del SDK y el proceso de aprovechamiento del ejecutor. Puede haber uno o más procesos del SDK, según la canalización y el tipo de VM, pero solo hay un proceso de aprovechamiento del ejecutor por VM.
  • Los procesos del SDK ejecutan el código de usuario y otras funciones específicas del lenguaje, mientras que el proceso de aprovechamiento del ejecutor administra todo lo demás.
  • El proceso de aprovechamiento del ejecutor espera a que todos los procesos del SDK se conecten a él antes de comenzar a solicitar trabajo de Dataflow.
  • Es posible que los trabajos se retrasen si la VM de trabajador instala y descarga dependencias durante el inicio del proceso del SDK. Si se producen problemas durante un proceso del SDK, como cuando se inician o instalan bibliotecas, el trabajador informa que está en mal estado. Si aumentan los tiempos de inicio, habilita la API de Cloud Build en tu proyecto y envía tu canalización con el siguiente parámetro: --prebuild_sdk_container_engine=cloud_build.
  • Debido a que Dataflow Runner v2 usa puntos de control, cada trabajador puede esperar hasta cinco segundos mientras almacena los cambios en búfer antes de enviar los cambios para su procesamiento posterior. Como resultado, se espera una latencia de aproximadamente seis segundos.