Stream processing — tecnologías y comparativa — AprenderBigData.com

Oscar Fmdc
4 min readJun 12, 2020

--

En esta entrada exploramos las tecnologías open source más populares de stream processing y las comparamos analizando sus características, ventajas y desventajas.

¿Qué es el Stream Processing?

El stream processing está basado en la idea de procesar los datos de forma continua. En cuanto estos datos están disponibles se procesan de manera secuencial. Para ello, se usan flujos de datos infinitos y sin límites de tiempo. La manera tradicional de procesar los datos ha sido en batches, agrupados en grandes lotes, esta técnica se llama batch processing.

Actualmente, los servicios en tiempo real que usan estos mecanismos de stream processing cada vez tienen más demanda. A través de estas técnicas es posible acelerar la velocidad a la que se obtiene valor de los datos y generar acciones para interaccionar con los clientes con poca latencia.

Entre los casos de uso más comunes se encuentra la monitorización de sistemas, de redes y de aplicaciones, dispositivos Internet of Things (IoT), sistemas de recomendación y optimización de resultados. Además, permiten generar notificaciones en dispositivos y aplicaciones móviles en tiempo real.

Generalmente, las latencias que se consideran al hablar de los sistemas de tiempo real o de stream processing son del orden de 10 milisegundos a 1 segundo. En función del caso de uso o el ámbito de su aplicación, estas latencias pueden reducirse, aunque supondrán importantes desafíos.

Conceptos básicos en stream processing

A continuación vamos a desarrollar algunos conceptos y términos básicos que se han generado alrededor de las tecnologías de stream processing.

Los sistemas de streaming distribuidos tienen tres maneras de gestionar las garantías de entrega de los mensajes. At-least-once o al menos una vez significa que en caso de fallo, el mensaje se entregará al menos una vez correctamente. At-most-once significa que el mensaje se entregará como máximo una vez. Por último, exactly-once nos garantiza que el mensaje se va a entregar exactamente una vez, realizando el sistema las comprobaciones necesarias para que esto suceda.

Tupla: conjunto de elementos o de tipos de datos simples guardados de forma consecutiva.

Flujo de datos: secuencia infinita de tuplas.

Ventanas de procesamiento: Dividen los datos de entrada en partes finitas. Permiten tratar las secuencias infinitas con unos recursos limitados como la memoria del sistema. Pueden estar basadas en tiempo o en el número de elementos y se pueden desplazar a medida que se procesa su contenido. Existen varios tipos de ventanas dependiendo de las características del sistema.

Operaciones con y sin estado: Las operaciones sin estado permiten obtener un resultado por cada uno de los eventos procesados. Las operaciones sin estado operan sobre un conjunto de elementos para generar una salida.

Para mantener la tolerancia a fallos, los sistemas de streaming usan checkpointing. De esta manera, almacenan de forma persistente el estado del sistema en instantes de tiempo y el punto en el que se encuentran para poder recuperar la información en el caso de que ocurra algún fallo de red o en los propios nodos.

Tecnologías de Stream Processing

En la actualidad existen varias tecnologías y frameworks open source de stream processing, todas ellas son de reciente creación, desarrolladas en los últimos años. Hemos dejado fuera de esta lista a Apache Storm debido a que otras tecnologías han tomado la delantera en cuanto a capacidades y el proyecto está en desuso. A continuación, comentaremos los aspectos más importantes de las más populares.

Kafka Streams

Kafka Streams es una librería (API) que permite construir aplicaciones de procesamiento de flujos de datos usando Apache Kafka como sistema de almacenamiento de entrada y de salida de datos.

Aunque Kafka Streams depende de Apache Kafka puede conectarse a sistemas externos y numerosas tecnologías para construir flujos de datos en tiempo real desacoplando aplicaciones y facilitando la implementación de microservicios.

Ventajas

  • No necesita un clúster dedicado (usa Kafka)
  • APIs de consumidores y productores de mensajes
  • Reprocesamiento sencillo de mensajes
  • Desacoplamiento de aplicaciones, muy usado en microservicios
  • Puede usarse como base de datos
  • Procesamiento de eventos individuales, streams nativos
  • Garantías de entrega exactly-once

Desventajas

  • Acoplado con Apache Kafka
  • No tiene mucha adopción para cargas de trabajo pesadas

Spark Streaming

Spark Streaming extiende la funcionalidad de Apache Spark para realizar stream processing. Para ello, agrupa los datos recibidos en pequeños micro-batches e incluye operadores con y sin estado.

Ventajas

  • Facilidad de uso: APIs de alto nivel conocidas y bien mantenidas en la comunidad, con gran cantidad de documentación
  • Librerías extensas para grafos y machine learning
  • Lenguajes de programación Scala, Java y Python
  • Incluye una CLI (Interfaz de línea de comandos) en Scala y Python
  • Checkpointing sencillo gracias a micro-batches
  • Mayor throughput debido a la gestión en micro-batches
  • Soporta una arquitectura lambda
  • Garantías de entrega exactly-once

Desventajas

  • Mayores latencias de procesamiento a causa de micro-batches
  • Parametrización compleja y ajustes manuales
  • Solo soporta ventanas basadas en tiempo

Apache Flink

Apache Flink es una plataforma distribuida de stream processing con alta disponibilidad y escalabilidad. Aunque puede realizar procesamiento batch y streaming, ha sido diseñado con una arquitectura orientada al procesamiento de eventos en streaming individuales.

Ventajas

  • Procesamiento de eventos individuales, streams nativos
  • Velocidad, baja latencia y throughput configurables
  • Ventanas de procesamiento personalizadas basadas en eventos o en tiempo
  • Garantías de entrega exactly-once

Desventajas

  • Comunidad más pequeña pero en crecimiento
  • La adopción para procesamiento batch es baja

Haz click aquí para aprender más sobre Stream Processing y acceder a las conclusiones, preguntas frecuentes y formación recomendada.

Echa un ojo a mi lista de reproducción de Big Data en Youtube

Originally published at https://aprenderbigdata.com on June 12, 2020.

--

--

No responses yet