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:
Dataflow Runner v2 te permite compilar previamente tu contenedor de Python, lo que puede mejorar los tiempos de inicio de la VM y el rendimiento del ajuste de escala automático horizontal. Para obtener más información, consulta Compila dependencias de Python de forma previa.
Dataflow Runner v2 admite canalizaciones de varios lenguajes, un atributo que permite que tu canalización de Apache Beam use transformaciones definidas en otros SDK de Apache Beam. Dataflow Runner v2 admite el uso de transformaciones de Java desde una canalización del SDK de Python y el uso de transformaciones de Python desde una canalización del SDK de Java. Cuando ejecutas las canalizaciones de Apache Beam sin Runner v2, el ejecutor de Dataflow usa trabajadores específicos del lenguaje.
Limitaciones y restricciones
Dataflow Runner v2 tiene los siguientes requisitos:
- Dataflow Runner v2 requiere Streaming Engine para los trabajos de transmisión.
- 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, las clases
MapState
ySetState
no son compatibles con Runner v2. Para usar las clasesMapState
ySetState
con canalizaciones de Java, habilita Streaming Engine, inhabilita Runner v2 y usa la versión 2.58.0 o posterior del SDK de Apache Beam. - En las canalizaciones por lotes y de transmisión que usan el SDK de Java de Apache Beam, no se usan las clases
OrderedListState
yAfterSynchronizedProcessingTime
.
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
.
Algunas canalizaciones se habilitan de forma automática en Runner v2.
Para evitar que tu canalización use esta función, usa la opción de canalización --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.
- Para diagnosticar problemas en tu código de usuario, examina los registros de trabajador de los procesos del SDK. Si encuentras errores en los registros del aprovechamiento del ejecutor, comunícate con el equipo de asistencia para informar un error.
- Para depurar errores comunes relacionados con las canalizaciones de varios lenguajes de Dataflow, consulta la guía Sugerencias para canalizaciones de varios lenguajes.