Kafka vs Flume vs Spark

Publicado por

Lectura de datos en tiempo real

1. Flume: herramienta para el movimiento de datos

PROS
  • Esta muy bien integrado con el ecosistema de Hadoop, por ejemplo el sink HDFS o el de HBase se integra directamente con la seguridad del cluster (Kerberos), además es una buena herramienta para la recoleción y agregación de logs.
  • Su caso de uso más común es actuar como un conducto de datos para las ingerir datos dentro de ecosistemas Hadoop.
  • Flume tiene algunas características que lo hacen atractivo para una ingesta con un procesamiento sencillo de datos. La clave de Flume esta en que incorpora muchas piezas que permiten la lectura y escritura de datos de orígenes muy diversos.
  • Facilidad para el filtrado y transformación de datos a través del uso de interceptores.
CONS
  • Dificultad para escalar. Añadir más consumidores a Flume significa cambiar la topología del pipeline, y añadir un nuevo destino.
  • Si la durabilidad del mensaje es una consideración importante. Flume soporta canales efímeros basados en memoria y canales duraderos basados en ficheros. Incluso utilizando canales duraderos los mensajes que se queden en el canal no estarán disponibles en el destino hasta que se recupere el agente.
  • El canal basado en ficheros no replica datos en un nodo diferente, por lo que depende totalmente de la durabilidad del disco en el que escribe, por lo que si es la durabilidad es crucial se recomienda utilizar SAN o RAID.
  • No es adecuado para el procesamiento complejo de eventos.

2. Kafka Consumer: framework para la lectura y escritura de datos

PROS
  • La escalabilidad de Kafka también se demuestra en su capacidad para manejar picos de eventos, aquí esta su fuerte, actúa como “amortiguador” entre productores y consumidores.
  • Diferentes grupos de consumidores pueden consumir mensajes a diferentes ritmo.
CONS
  • Responsabilidad del consumidor de realizar el seguimiento del topic a través del offset.
  • Kafka no proporciona soporte nativo para el procesamiento de mensajes, es probable que necesite integrarse con otras herramientas, como Spark Streaming para completar el trabajo.
  • A diferencia de Flume, si utilizas Kafka vas a tener que escribir tu propio consumidor, que ya esta integrado con prácticamente todas las piezas del ecosistema.

3. Spark Streaming: framework de procesamiento de datos.

PROS
  • Paralelismo simplificado.  Spark Streaming creará tantas particiones del RDD como particiones tenga el topic del que este leyendo. Cada una trabajando en un worker por lo que se leerán datos de kafka en paralelo.
  • Beneficios derivados de Spark, es altamente escalable y transparente para la aplicación. Consumo de mensajes con semántica de exactamente uno.
  • Procesamiento complejo de mensajes con funciones de alto nivel.
CONS
  • Uso avanzado de datastreams, conocimientos técnicos avanzados.
  • Latencia en el procesamiento, por el hecho de realizar en micro-batches.

4. Conclusiones

Si se necesitan los procesos en tiempo real, optaría por Spark Streaming, si el tiempo no fuera un factor importante entonces utilizaría trabajos Spark.
El consumidor Kafka es muy simple de utilizar pero proporciona poca funcionalidad. Estos consumidores serán sustituidos por los nuevos Kafka Streams que permiten leer, procesar y analizar datos almacenados en Kafka.
Kafka Streams se utilizará cuando los datos haya que volverlos a escribir en Kafka, y Spark Streaming para cuando hay que escribir en bases de datos o construir modelos de análisis de datos.
Hay que tener en cuenta cual es el volumen de datos que hay que manejar, si se necesita una solución escalable o no, o si se van a realizar transformaciones de datos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s