Spark Streaming (procesamiento por lotes y tiempo real)

Definición de Spark Streaming

Spark streaming logoApache Spark Streaming es una extensión de la API core de Spark, que da respuesta al procesamiento de datos en tiempo real de forma escalable, con alto rendimiento y tolerancia a fallos.

Spark Sreaming fue desarrollado por la Universidad de California en Berkeley, actualmente Databrinks la que se encarga de dar soporte y realizar mejoras.

Como idea general se podría decir que Spark Streaming toma un flujo de datos continuo, lo convierte en un flujo discreto denominado DStream, para que el core de Spark lo pueda procesar.

Spark Streaming

Spark Streaming

Spark Streaming puede ingerir datos de multitud de fuentes, tales como Kafka, Flume, RabbitMQ, Kinesis, ZeroMQ o sockets TCP.

Spark Engine (Core) procesa datos utilizando una multitud de algoritmos de machine learning o de grafos y funciones tales como map, reduce, join y window. Finalizado el procesamiento los datos son almacenados en sistema de ficheros, base de datos para poder presentarse en dashboards por ejemplo.

Dstream o stream discreto: no es más que una abstracción proporcionada por Spark Streaming que representa a una secuencia de RDDs ordenados en el tiempo que cada uno de ellos guarda datos de un intervalo concreto. Con esta abstracción se consigue que el core lo analice sin enterarse de que está procesando un flujo de datos, ya que el trabajo de crear y coordinar los RDDs es realizado por Spark Streaming.

Spark Streaming convierte a Apache Spark en el verdadero sucesor de Hadoop ya que proporciona el primer marco que soporta completamente la arquitectura lambda, la cual nos trabajar simultáneamente procesamiento de datos en batch y streaming.

 

Características

  • Tecnología popular, madurada y ampliamente adoptado.
  • Posee una gran comunidad de desarrolladores.
  • Proporciona API de programación para Java, Scala, Python, R, SQL.
  • Proporciona librerías para Machine Learning y Grafos.
  • Permite administración de memoria personalizada (como Flink).
  • Soporta marcas de agua.
  • Soporte de procesamiento de tiempo de evento.
  • No es Streaming real por lo que no es ideal cuando se busca bajas latencias (< 0,5 seg).
  • Tolerante a fallas, debido a la naturaleza de mirco-lote.
  • Permite multitud de parámetros de configuración, por lo que incrementa su dificultad de uso.
  • No dispone de estado por naturaleza.
  • En muchas opciones avanzadas se queda por debajo de Flink.

Fuente: Web Oficial

Autor: Diego Calvo