Usar Dataflow Prime

Dataflow Prime es una plataforma de procesamiento de datos sin servidor para flujos de Apache Beam. Dataflow Prime, que se basa en Dataflow, usa una arquitectura separada por computación y estado. En los siguientes casos, Dataflow Prime puede mejorar la eficiencia de la canalización:

Dataflow Prime admite tanto las canalizaciones por lotes como las de streaming. De forma predeterminada, Dataflow Prime usa Dataflow Shuffle y Dataflow Runner v2 para los flujos de procesamiento por lotes.

Compatibilidad con versiones del SDK

Dataflow Prime admite los siguientes SDKs de Apache Beam:

  • Versión 2.21.0 o posterior del SDK de Apache Beam para Python

  • Versión 2.30.0 o posterior del SDK de Java de Apache Beam

  • Versión 2.44.0 o posterior del SDK de Go de Apache Beam

Para descargar el paquete del SDK o leer las notas de la versión, consulta Descargas de Apache Beam.

Funciones de Dataflow Prime

A continuación, se muestra la lista de funciones de Dataflow Prime admitidas para diferentes tipos de canalizaciones:

  • Autoescalado vertical (memoria). Admite las canalizaciones de streaming en Python, Java y Go.
  • Ajuste adecuado (sugerencias de recursos). Admite flujos de procesamiento por lotes en Python y Java.
  • Visualizador de trabajos Admite flujos de procesamiento por lotes en Python y Java.
  • Recomendaciones inteligentes. Admite tanto las canalizaciones de streaming como las de procesamiento por lotes en Python y Java.
  • Flujos de procesamiento de datos. Admite tanto las canalizaciones de streaming como las de procesamiento por lotes en Python y Java.

Las funciones Visualizador de tareas, Recomendaciones inteligentes y Pipelines de datos también se admiten en tareas que no son de Dataflow Prime.

Autoescalado vertical

Esta función ajusta automáticamente la memoria disponible para las VMs de los trabajadores de Dataflow de forma que se adapte a las necesidades de la canalización y ayude a evitar errores de falta de memoria. En Dataflow Prime, el autoescalado vertical funciona junto con el autoescalado horizontal para escalar los recursos de forma dinámica.

Para obtener más información, consulta Autoescalado vertical.

Ajuste adecuado

Esta función usa pistas de recursos, una función de Apache Beam. Si usas sugerencias de recursos, puedes especificar los requisitos de recursos de toda la canalización o de pasos concretos de la canalización. Esta función te permite crear trabajadores personalizados para diferentes pasos de una canalización. El ajuste adecuado te permite especificar recursos de la canalización para maximizar la eficiencia, reducir los costes operativos y evitar errores de falta de memoria y otros recursos. Admite sugerencias de memoria y recursos de GPU.

Para que el ajuste sea correcto, se necesita Apache Beam 2.30.0 o una versión posterior.

Para obtener más información, consulta Ajuste correcto.

Visualizador de tareas

Esta función te permite ver el rendimiento de una tarea de Dataflow y optimizarlo buscando código ineficiente, incluidos los cuellos de botella de paralelización. En la consola de Google Cloud , puedes hacer clic en cualquier trabajo de Dataflow de la página Trabajos para ver los detalles del trabajo. También puede ver la lista de pasos asociados a cada fase de la canalización.

Para obtener más información, consulta Detalles de la ejecución.

Recomendaciones inteligentes

Esta función le permite optimizar y solucionar problemas de la canalización en función de las recomendaciones que se proporcionan en la pestaña Diagnóstico de la página de detalles del trabajo. En la consola de Google Cloud , puedes hacer clic en cualquier trabajo de Dataflow de la página Trabajos para ver los detalles del trabajo.

Para obtener más información, consulta Diagnóstico.

Flujos de procesamiento de datos

Esta función le permite programar trabajos, observar el uso de los recursos, hacer un seguimiento de los objetivos de actualización de los datos de streaming y optimizar las canalizaciones.

Para obtener más información, consulta Trabajar con flujos de datos.

Requisitos de cuotas y límites

Las cuotas y los límites son los mismos para Dataflow y Dataflow Prime. Para obtener más información, consulta Cuotas y límites.

Si eliges Data Pipelines, habrá otras implicaciones para las cuotas y las regiones.

Funciones no compatibles

Dataflow Prime no admite lo siguiente:

  • Designar tipos de VM específicos mediante las marcas --worker_machine_type o --machine_type para las canalizaciones de Python y --workerMachineType para las canalizaciones de Java.
  • Ver o usar SSH para iniciar sesión en las VMs de trabajador.
  • Programación flexible de recursos (FlexRS).
  • Usar Controles de Servicio de VPC con escalado automático vertical. Si habilitas Dataflow Prime e inicias un nuevo trabajo dentro de un perímetro de Controles de Servicio de VPC, el trabajo usará Dataflow Prime sin autoescalado vertical.
  • Servicio multiproceso (MPS) de NVIDIA.
  • Las canalizaciones de Java que cumplan los siguientes requisitos pueden usar las clases MapState y SetState:
    • usar Streaming Engine
    • Usar las versiones 2.58.0 y posteriores del SDK de Apache Beam
    • no usar Runner v2

Todas las opciones de canalización que no se hayan mencionado explícitamente anteriormente o en la tabla de comparación de funciones funcionan igual en Dataflow y Dataflow Prime.

Antes de usar Dataflow Prime

Para usar Dataflow Prime, puedes reutilizar el código de tu flujo de procesamiento y habilitar la opción de Dataflow Prime a través de Cloud Shell o mediante programación.

Dataflow Prime es compatible con las tareas por lotes que usan Dataflow Shuffle y las tareas de streaming que usan Streaming Engine. Sin embargo, te recomendamos que pruebes tus canalizaciones con Dataflow Prime antes de usarlas en un entorno de producción.

Si tu flujo de procesamiento de transmisión se está ejecutando en producción, sigue estos pasos para usar Dataflow Prime:

  1. Detén el flujo de procesamiento.

  2. Habilita Dataflow Prime.

  3. Vuelve a ejecutar la canalización.

Habilitar Dataflow Prime

Para habilitar Dataflow Prime en un flujo de procesamiento, sigue estos pasos:

  1. Habilita la API Cloud Autoscaling.

    Activar la API

    Dataflow Prime usa la API Cloud Autoscaling para ajustar la memoria de forma dinámica.

  2. Habilita Prime en las opciones de tu flujo de procesamiento.

    Puedes definir las opciones de la canalización de forma programática o mediante la línea de comandos. En las versiones compatibles del SDK de Apache Beam, habilita la siguiente marca:

Java

--dataflowServiceOptions=enable_prime

Python

Versión 2.29.0 o posterior del SDK de Apache Beam para Python:

--dataflow_service_options=enable_prime

Versión del SDK de Apache Beam para Python de la 2.21.0 a la 2.28.0:

--experiments=enable_prime

Go

--dataflow_service_options=enable_prime

Usar Dataflow Prime con plantillas

Si usas plantillas de Dataflow, puedes habilitar Dataflow Prime de una de las siguientes formas:

  1. En el caso de las tareas iniciadas desde la página Crear tarea a partir de plantilla:

    1. Ve a la página Crear tarea a partir de plantilla.

      Ir a Crear tarea a partir de plantilla

    2. En el campo Additional experiment (Experimento adicional), introduce enable_prime.

  2. En el caso de las tareas que se inician desde una plantilla a través de la interfaz de línea de comandos, pasa la marca --additional-experiments=enable_prime.

  3. Para habilitar Dataflow Prime al crear una plantilla, define la marca --experiments=enable_prime.

Usar Dataflow Prime en cuadernos de Apache Beam

Si usas un cuaderno de Apache Beam, puedes habilitar Dataflow Prime mediante programación con PipelineOptions:

options = pipeline_options.PipelineOptions(
    flags=[],
    dataflow_service_options=['enable_prime'],
)

Para obtener más información sobre cómo definir opciones de Dataflow en un cuaderno, consulta Iniciar tareas de Dataflow desde una canalización creada en tu cuaderno.

Comparación de funciones entre Dataflow y Dataflow Prime

En la siguiente tabla se comparan las funciones disponibles en ambas variantes de Dataflow.

Función Dataflow Prime Dataflow
Runner v2 Función predeterminada que no se puede desactivar en las tareas por lotes y que es opcional en las tareas de streaming Función predeterminada con una opción para desactivarla en las tareas por lotes y opcional en las tareas de streaming
Shuffle de Dataflow para tareas por lotes Función predeterminada con opción para desactivarla Función predeterminada con opción para desactivarla
Streaming Engine para tareas de streaming Función opcional para las canalizaciones de Java y siempre activada para las canalizaciones de Python Función opcional para las canalizaciones de Java y siempre activada para las canalizaciones de Python desde la versión 2.45.0
Autoescalado horizontal Función predeterminada con opción para desactivarla Función predeterminada con opción para desactivarla
Autoescalado vertical Función predeterminada con opción para desactivarla No aplicable
Ajuste adecuado Función opcional Función opcional
Facturación Facturación sin servidor Facturación estándar

Siguientes pasos