Dataflow es un servicio de Google Cloud que proporciona procesamiento unificado de datos por lotes y de transmisión a gran escala. Usa Dataflow para crear canalizaciones de datos en las que se lean una o más fuentes, se transformen los datos y se escriban en un destino.
Entre los casos prácticos típicos de Dataflow, se incluyen los siguientes:
- Transferencia de datos: Transferencia o replicación de datos entre subsistemas.
- Flujos de trabajo ETL (extracción, transformación y carga) que transfieren datos a un almacén de datos, como BigQuery.
- Potenciación de paneles de IE.
- Aplicación del AA en tiempo real a la transmisión de datos.
- Procesamiento de datos del sensor o registro a gran escala.
Dataflow usa el mismo modelo de programación para las estadísticas por lotes y de transmisión. Las canalizaciones de transmisión pueden lograr una latencia muy baja. Puedes transferir, procesar y analizar volúmenes fluctuantes de datos en tiempo real. De forma predeterminada, Dataflow garantiza un procesamiento de tipo “exactamente una vez” de cada registro. Para las canalizaciones de transmisión que pueden tolerar duplicados, a menudo puedes reducir los costos y mejorar la latencia si habilitas el modo de al menos una vez.
Ventajas de Dataflow
En esta sección, se describen algunas de las ventajas de usar Dataflow.
Administrado
Dataflow es un servicio completamente administrado. Esto significa que Google administra todos los recursos necesarios para ejecutar Dataflow. Cuando ejecutas un trabajo de Dataflow, el servicio de Dataflow asigna un grupo de VMs de trabajador para ejecutar la canalización. No es necesario que aprovisiones o administres estas VMs. Cuando el trabajo se completa o se cancela, Dataflow borra las VMs de forma automática. Se te facturan los recursos de procesamiento que usa tu trabajo. Para obtener más información sobre los costos, consulta Precios de Dataflow.
Escalable
Dataflow está diseñado para admitir canalizaciones de transmisión y por lotes a gran escala. Los datos se procesan en paralelo, por lo que el trabajo se distribuye en varias VMs.
Dataflow puede realizar el ajuste de escala automático mediante el aprovisionamiento de VMs de trabajador adicionales o mediante el cierre de algunas VMs de trabajador, si se necesitan menos. También optimiza el trabajo según las características de la canalización. Por ejemplo, Dataflow puede volver a balancear de forma dinámica el trabajo entre las VMs, de modo que el trabajo paralelo se complete de manera más eficiente.
Portátil
Dataflow se basa en el proyecto de código abierto de Apache Beam. Apache Beam te permite escribir canalizaciones mediante un SDK específico de lenguaje. Apache Beam es compatible con los SDK de Java, Python y Go, así como canalizaciones de varios lenguajes.
Dataflow ejecuta las canalizaciones de Apache Beam. Si decides ejecutar más adelante tu canalización en una plataforma diferente, como Apache Flink o Apache Spark, puedes hacerlo sin reescribir el código de la canalización.
Flexible
Puedes usar Dataflow para canalizaciones relativamente simples, como mover datos. Sin embargo, también es adecuado para aplicaciones más avanzadas, como las estadísticas de transmisión en tiempo real. Una solución compilada en Dataflow puede crecer con tus necesidades a medida que pasas de un lote a otro para transmitir o encuentras casos de uso más avanzados.
Dataflow admite varias formas diferentes de crear y ejecutar canalizaciones, según tus necesidades:
Escribe código mediante los SDK de Apache Beam.
Implementa una plantilla de Dataflow. Las plantillas te permiten ejecutar canalizaciones predefinidas. Por ejemplo, un desarrollador puede crear una plantilla y, luego, un científico de datos puede implementarla a pedido.
Google también proporciona una biblioteca de plantillas para situaciones comunes. Puedes implementar estas plantillas sin conocer ningún concepto de programación de Apache Beam.
Usa notebooks de JupyterLab para desarrollar y ejecutar canalizaciones de forma iterativa.
Observable
Puedes supervisar el estado de los trabajos de Dataflow a través de la interfaz de supervisión de Dataflow en la consola de Google Cloud. La interfaz de supervisión incluye una representación gráfica de tu canalización, que muestra el progreso y los detalles de ejecución de cada etapa de canalización. La interfaz de supervisión facilita la detección de problemas como cuellos de botella o latencia alta. También puedes perfilar tus trabajos de Dataflow para supervisar el uso de CPU y la asignación de memoria.
Cómo funciona
Dataflow usa un modelo de canalización de datos, en el que los datos se mueven a través de una serie de etapas. Las etapas pueden incluir la lectura de datos de una fuente, la transformación y la agregación de datos, y la escritura de los resultados en un destino.
Las canalizaciones pueden variar desde un procesamiento muy simple hasta uno más complejo. Por ejemplo, una canalización puede hacer lo siguiente:
- Mover los datos como están a un destino.
- Transformar los datos para que el sistema de destino pueda usarlos más.
- Agregar, procesar y enriquecer los datos para el análisis.
- Unir los datos con otros datos.
Una canalización que se define en Apache Beam no especifica cómo se ejecuta la canalización. Ejecutar la canalización es el trabajo de un ejecutor. El propósito de un ejecutor es ejecutar una canalización de Apache Beam en una plataforma específica. Apache Beam admite varios ejecutores, incluido un ejecutor de Dataflow.
Para usar Dataflow con las canalizaciones de Apache Beam, especifica el ejecutor de Dataflow. El ejecutor sube tu código ejecutable y las dependencias a un bucket de Cloud Storage y crea un trabajo de Dataflow. Luego, Dataflow asigna un grupo de VMs para ejecutar la canalización.
En el siguiente diagrama, se muestra una solución de ETL y IE típica con Dataflow y otros servicios de Google Cloud:
En este diagrama, se muestran las siguientes etapas:
- Pub/Sub transfiere datos desde un sistema externo.
- Dataflow lee los datos de Pub/Sub y los escribe en BigQuery. Durante esta etapa, Dataflow puede transformar o agregar los datos.
- BigQuery actúa como un almacén de datos, lo que permite a los analistas de datos ejecutar consultas ad hoc en los datos.
- Looker proporciona estadísticas de IE en tiempo real a partir de los datos almacenados en BigQuery.
Para situaciones básicas de movimiento de datos, puedes ejecutar una plantilla que proporciona Google. Algunas plantillas admiten funciones definidas por el usuario (UDF) escritas en JavaScript. Las UDF te permiten agregar lógica de procesamiento personalizado a una plantilla. Para obtener canalizaciones más complejas, comienza con el SDK de Apache Beam.
¿Qué sigue?
- Si deseas obtener más información sobre Apache Beam, consulta Modelo de programación para Apache Beam.
- Instala el SDK de Apache Beam.
- Para crear tu primera canalización, sigue la guía de inicio rápido de Java, la guía de inicio rápido de Python o la guía de inicio rápido de Go.
- Obtén información sobre las plantillas de Dataflow mediante la creación de una canalización de transmisión con una plantilla de Dataflow.