Apache Kafka vs Apache Storm


Apache Kafka: Sistema de mensajería distribuida
Apache Storm: Procesamiento de Mensajes en Tiempo Real

¿Cómo podemos usar ambas tecnologías en una canalización de datos en tiempo real para procesar datos de eventos?

En términos de canalización de datos en tiempo real, ambos me parecen hacer el trabajo idéntico. ¿Cómo podemos usar ambas tecnologías en una canalización de datos?

Author: Peter Mortensen, 2014-02-16

6 answers

Utiliza Apache Kafka como una cola distribuida y robusta que puede manejar datos de gran volumen y le permite pasar mensajes de un punto final a otro.

Storm no es una cola. Es un sistema que ha distribuido capacidades de procesamiento en tiempo real, lo que significa que puede ejecutar todo tipo de manipulaciones en datos en tiempo real en paralelo.

El flujo común de estas herramientas (como lo conozco) es el siguiente:

Sistema en tiempo real > > Kafka > > Tormenta > > NoSQL > > BI (opcional)

Para que su aplicación en tiempo real maneje datos de alto volumen, lo envía a la cola Kafka. Storm extrae los datos de kafka y aplica alguna manipulación requerida. En este punto, generalmente le gusta obtener algunos beneficios de estos datos, por lo que puede enviarlos a alguna base de datos Nosql para cálculos de BI adicionales, o simplemente puede consultar este NoSQL desde cualquier otro sistema.

 139
Author: forhas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-16 07:53:08

Kafka y Storm tienen un propósito ligeramente diferente:

Kafka es un agente de mensajes distribuido que puede manejar una gran cantidad de mensajes por segundo. Utiliza el paradigma publish-subscribe y se basa en temas y particiones. Kafka utiliza Zookeeper para compartir y guardar el estado entre los corredores. Así que Kafka es básicamente responsable de transferir mensajes de una máquina a otra.

Storm es un sistema analítico escalable, tolerante a fallos y en tiempo real (piense como Hadoop en en tiempo real). Consume datos de fuentes (Spouts) y los pasa a canalizaciones (Bolts). Puede combinarlos en la topología. Así que Storm es básicamente una unidad de computación (agregación, aprendizaje automático).


Pero puede usarlos juntos: por ejemplo, su aplicación usa kafka para enviar datos a otros servidores que usan storm para hacer algunos cálculos en él.

 31
Author: Salvador Dali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-26 07:48:14

Sé que este es un hilo más antiguo y las comparaciones de Apache Kafka y Storm eran válidas y correctas cuando se escribieron, pero vale la pena señalar que Apache Kafka ha evolucionado mucho a lo largo de los años y desde la versión 0.10 (abril de 2016) Kafka ha incluido una API de Kafka Streams que proporciona capacidades de procesamiento de flujos sin la necesidad de ningún software adicional como Storm. Kafka también incluye la API Connect para conectarse a varias fuentes y sumideros (destinos) de datos.

Anuncio blog - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple /

Documentación actual de Apache - https://kafka.apache.org/documentation/streams /

En 0.11 Kafka la funcionalidad de procesamiento de flujos se amplió aún más para proporcionar Semántica y Transacciones Exactamente Una vez.

Https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/

 17
Author: Hans Jespersen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-19 19:29:05

Así es como funciona

Kafka - Para proporcionar una transmisión en tiempo real

Storm - Para realizar algunas operaciones en esa corriente

Puedes echar un vistazo al proyecto GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .

(D3js es una biblioteca de representación gráfica)

Caso ideal:

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

Este repositorio se basa en:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
 13
Author: Abhishek Goel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-05 06:30:35

Como cada uno le explica que Apache Kafka: es una cola de mensajería continua

Apache Storm: es una herramienta de procesamiento continuo

Aquí en este aspecto Kafka obtendrá los datos de cualquier sitio web como FB,Twitter mediante el uso de API y que los datos se procesan mediante el uso de Apache Storm y puede almacenar los datos procesados en cualquiera de las bases de datos que desee.

Https://github.com/miguno/kafka-storm-starter

Solo síguelo tendrás alguna idea

 3
Author: syed jameer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 12:12:25

Cuando tengo un caso de uso que me requiere visualizar o alertar sobre patrones (piense en tendencias de Twitter), mientras continúo procesando los eventos, tengo varios patrones.
NiFi me permitiría procesar un evento y actualizar un almacén de datos persistente con baja agregación por lotes(er) con muy, muy poca codificación personalizada.
Storm (mucha codificación personalizada) me permite acceder casi en tiempo real a los eventos de tendencias.
Si puedo esperar muchos segundos, entonces puedo hacer un lote de kafka, en hdfs (Parquet) y proceso.
Si necesito saberlo en segundos, necesito NiFi, y probablemente incluso Storm. (Piense en monitorear miles de estaciones terrestres, donde necesito ver las condiciones climáticas de la pequeña región para las advertencias de tornados).

 0
Author: Daemeon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-07 06:04:43