Información general sobre Dataflow

Dataflow es un Google Cloud servicio que ofrece un procesamiento de datos unificado por lotes y en tiempo real 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.

Entre los casos prácticos habituales de Dataflow se incluyen los siguientes:

  • Movimiento de datos: ingestión o replicación de datos entre subsistemas.
  • ETL que ingieren datos en un almacén de datos como BigQuery.
  • Backend para paneles de control de inteligencia empresarial (BI)
  • Análisis de aprendizaje automático (ML) en tiempo real de datos de streaming.
  • Procesamiento de 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 conseguir una latencia baja. Puede ingerir, procesar y analizar volúmenes de datos variables en tiempo real. De forma predeterminada, Dataflow proporciona un procesamiento exactamente una vez de cada registro. En el caso de las canalizaciones de streaming que pueden tolerar duplicados, puedes reducir los costes y mejorar la latencia habilitando el modo al menos una vez.

Ventajas del procesamiento de datos con Dataflow

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

Tratamiento de datos gestionado

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.

Flujos de procesamiento de datos escalables

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.

Portabilidad con Apache Beam

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.

Desarrollo flexible de flujos de procesamiento de datos

Puedes usar Dataflow para las canalizaciones con casos de uso sencillos, como mover datos. Sin embargo, Dataflow también es adecuado para aplicaciones más avanzadas, como el análisis de streaming en tiempo real. Una solución creada en Dataflow puede adaptarse a tus necesidades a medida que pases del procesamiento por lotes al procesamiento en tiempo real o 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 situaciones 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.

Tareas de flujo de procesamiento de datos observables

Puede monitorizar el estado de sus 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 canalización, que muestra el progreso y los detalles de ejecución de cada fase de la canalización. 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 trabajos de Dataflow para monitorizar el uso de la CPU y la asignación de memoria.

Cómo funcionan las canalizaciones de datos para el procesamiento en streaming y por lotes

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.

Las canalizaciones pueden ir desde un procesamiento muy básico 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 VMs 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 e 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