Información general sobre Dataflow

Dataflow es un Google Cloud servicio que ofrece un procesamiento unificado de datos de streaming y por lotes a gran escala. Utiliza Dataflow para crear pipelines de datos que lean datos de una o varias fuentes, los transformen y los escriban en un destino.

Estos son algunos de los casos prácticos habituales de Dataflow:

  • Movimiento de datos: ingesta o replicación de datos entre subsistemas.
  • ETL (extracción, transformación y carga) que ingieren datos en un almacén de datos, como BigQuery.
  • Impulsar los paneles de control de BI.
  • Aplicar el aprendizaje automático en tiempo real a los datos de streaming.
  • Procesar datos de sensores o de registros a gran escala.

Dataflow usa el mismo modelo de programación para las analíticas por lotes y en streaming. Los flujos de procesamiento pueden alcanzar una latencia muy baja. Puedes ingerir, procesar y analizar volúmenes de datos variables en tiempo real. De forma predeterminada, Dataflow garantiza el procesamiento exacto una vez de cada registro. En el caso de las canalizaciones de streaming que pueden tolerar duplicados, a menudo puedes reducir los costes y mejorar la latencia habilitando el modo al menos una vez.

Ventajas de Dataflow

En esta sección se describen algunas de las ventajas de usar Dataflow.

gestionados

Dataflow es un servicio totalmente gestionado. Esto significa que Google gestiona todos los recursos necesarios para ejecutar Dataflow. Cuando ejecutas una tarea de Dataflow, el servicio Dataflow asigna un grupo de VMs de trabajador para ejecutar el flujo de procesamiento. No tienes que aprovisionar ni gestionar estas máquinas virtuales. Cuando se completa o se cancela el trabajo, Dataflow elimina automáticamente las VMs. Se te cobra por los recursos de computación que usa tu trabajo. Para obtener más información sobre los costes, consulta los precios de Dataflow.

Escalable

Dataflow se ha diseñado para admitir flujos de procesamiento por lotes y de streaming a gran escala. Los datos se procesan en paralelo, por lo que el trabajo se distribuye entre varias máquinas virtuales.

Dataflow puede autoescalar aprovisionando máquinas virtuales de trabajador adicionales o cerrando algunas de ellas si se necesitan menos. También optimiza el trabajo en función de las características de la canalización. Por ejemplo, Dataflow puede reequilibrar dinámicamente el trabajo entre las VMs para que el trabajo paralelo se complete de forma más eficiente.

Portátil

Dataflow se basa en el proyecto de código abierto Apache Beam. Apache Beam te permite escribir flujos de procesamiento con un SDK específico de un lenguaje. Apache Beam es compatible con los SDKs de Java, Python y Go, así como con flujos de procesamiento multilingüe.

Dataflow ejecuta flujos de procesamiento de Apache Beam. Si decides ejecutar tu canalización en otra plataforma, como Apache Flink o Apache Spark, puedes hacerlo sin tener que reescribir el código de la canalización.

Flexible

Puedes usar Dataflow para crear flujos de procesamiento relativamente sencillos, como mover datos. Sin embargo, también es adecuada para aplicaciones más avanzadas, como el análisis de streaming en tiempo real. Una solución basada en Dataflow puede adaptarse a tus necesidades a medida que pases del procesamiento por lotes al procesamiento en tiempo real o cuando te enfrentes a casos prácticos más avanzados.

Dataflow admite varias formas de crear y ejecutar pipelines, en función de tus necesidades:

  • Escribe código con los SDKs de Apache Beam.

  • Implementa una plantilla de Dataflow. Las plantillas te permiten ejecutar flujos de procesamiento predefinidos. Por ejemplo, un desarrollador puede crear una plantilla y, después, un científico de datos puede implementarla bajo demanda.

    Google también ofrece una biblioteca de plantillas para casos habituales. Puedes implementar estas plantillas sin conocer ningún concepto de programación de Apache Beam.

  • Usa cuadernos de JupyterLab para desarrollar y ejecutar flujos de trabajo de forma iterativa.

Observable

Puedes monitorizar el estado de tus trabajos de Dataflow a través de la interfaz de monitorización de Dataflow en la consola de Google Cloud . La interfaz de monitorización incluye una representación gráfica de tu flujo de procesamiento, que muestra el progreso y los detalles de ejecución de cada fase del flujo. La interfaz de monitorización facilita la detección de problemas, como cuellos de botella o latencia alta. También puedes crear perfiles de tus tareas de Dataflow para monitorizar el uso de la CPU y la asignación de memoria.

Cómo funciona

Dataflow usa un modelo de flujo de procesamiento de datos, en el que los datos se mueven a través de una serie de fases. Las fases pueden incluir la lectura de datos de una fuente, la transformación y la agregación de los datos, y la escritura de los resultados en un destino.

Los pipelines pueden ir desde un procesamiento muy sencillo hasta uno más complejo. Por ejemplo, una canalización puede hacer lo siguiente:

  • Mueve los datos tal cual a un destino.
  • Transformar los datos para que el sistema de destino pueda usarlos más fácilmente.
  • Agrega, procesa y enriquece datos para analizarlos.
  • Combinar datos con otros datos.

Una canalización definida en Apache Beam no especifica cómo se ejecuta. La ejecución del flujo de procesamiento es tarea de un ejecutor. El objetivo de un runner es ejecutar un flujo de procesamiento de Apache Beam en una plataforma específica. Apache Beam admite varios ejecutores, incluido un ejecutor de Dataflow.

Para usar Dataflow con tus flujos de procesamiento de Apache Beam, especifica el ejecutor de Dataflow. El runner sube tu código ejecutable y tus dependencias a un segmento de Cloud Storage y crea un trabajo de Dataflow. A continuación, Dataflow asigna un grupo de máquinas virtuales para ejecutar el flujo de procesamiento.

En el siguiente diagrama se muestra una solución de ETL y BI habitual que usa Dataflow y otros servicios de Google Cloud :

Diagrama de una solución de ETL y BI que usa Dataflow

En este diagrama se muestran las siguientes fases:

  1. Pub/Sub ingiere datos de un sistema externo.
  2. Dataflow lee los datos de Pub/Sub y los escribe en BigQuery. Durante esta fase, Dataflow puede transformar o agregar los datos.
  3. BigQuery actúa como almacén de datos, lo que permite a los analistas de datos ejecutar consultas ad hoc en los datos.
  4. Looker proporciona estadísticas de BI en tiempo real a partir de los datos almacenados en BigQuery.

En los casos básicos de transferencia de datos, puedes ejecutar una plantilla proporcionada por Google. Algunas plantillas admiten funciones definidas por el usuario (UDF) escritas en JavaScript. Las funciones definidas por el usuario te permiten añadir lógica de procesamiento personalizada a una plantilla. Para tuberías más complejas, empieza con el SDK de Apache Beam.

Siguientes pasos