Apache Kafka vs Apache Storm

Apache Kafka: sistema de mensagens distribuído
Tempestade Apache: Processamento De Mensagens Em Tempo Real

Como podemos usar ambas as tecnologias num oleoduto de dados em tempo real para processar dados de eventos?

Em termos de transferência de dados em tempo real, ambos me parecem fazer o mesmo trabalho. Como podemos utilizar ambas as tecnologias num oleoduto de dados?

Author: Peter Mortensen, 2014-02-16

6 answers

Você usa o Apache Kafka como uma fila distribuída e robusta que pode lidar com dados de alto volume e lhe permite passar mensagens de um ponto final para outro.

A tempestade não é uma fila. É um sistema que tem distribuído habilidades de processamento em tempo real, o que significa que você pode executar todo o tipo de manipulações em dados em tempo real em paralelo.

O fluxo comum destas ferramentas (como eu o conheço) é o seguinte:

Sistema em tempo Real -- > Kafka -- > Storm -- > NoSql --> BI (facultativo)

Para que tenha a sua aplicação em tempo real a lidar com dados de volume elevado, envia-a para a fila do Kafka. Storm puxa os dados de kafka e aplica alguma manipulação necessária. Neste ponto você geralmente gosta de obter alguns benefícios a partir destes dados, então você pode enviá-lo para algum NoSQL db para cálculos BI adicionais, ou você pode simplesmente consultar este NoSql de qualquer outro sistema.

 139
Author: forhas, 2014-02-16 07:53:08
Kafka e Storm têm um propósito ligeiramente diferente:

Kafka é um corretor de mensagens distribuído que pode lidar com uma grande quantidade de mensagens por segundo. Ele usa o paradigma de publicar-subscrever e se baseia em tópicos e partições. Kafka usa Zookeeper para compartilhar e salvar o estado entre corretores. Então Kafka é basicamente responsável por transferir mensagens de uma máquina para outra.

Storm é um sistema analítico escalável, tolerante a falhas, em tempo real (pense como Hadoop in realtime). Consome dados de fontes (Spouts) e passa-os para pipeline (parafusos). Você pode combiná-los na topologia. Então Storm é basicamente uma unidade de computação (agregação, aprendizado de máquina).


Mas você pode usá-los em conjunto: por exemplo, a sua aplicação usa o kafka para enviar dados para outros servidores que usam o storm para fazer alguma computação nele.

 31
Author: Salvador Dali, 2015-01-26 07:48:14

Eu sei que este é um velho thread e comparações do Apache Kafka e a Tempestade foram válidos e corretos, quando eles foram escritos, mas vale a pena notar que o Apache Kafka tem evoluído muito ao longo dos anos e, desde a versão 0.10 (abril de 2016) Kafka tem incluído um Kafka Fluxos de API que fornece fluxo de recursos de processamento, sem a necessidade de qualquer software adicional, tais como a Tempestade. Kafka também inclui a API de ligação para a ligação em várias fontes e sumidouros (destinos) de dado.

Blog de anúnciohttps://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Documentação Apache actual - https://kafka.apache.org/documentation/streams/

Em 0.11 Kafka a funcionalidade de processamento de fluxo foi expandida para fornecer exatamente uma vez semântica e transações.

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

 17
Author: Hans Jespersen, 2017-08-19 19:29:05
É assim que funciona.

Kafka - para fornecer um fluxo em tempo real

Tempestade - para realizar algumas operações naquele fluxo

Pode dar uma vista de olhos ao projecto GitHub. https://github.com/abhishekgoel137/kafka-nodejs-d3js.

(D3js é uma biblioteca de representação gráfica)

Caso Ideal:

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

Este repositório é baseado em:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
 13
Author: Abhishek Goel, 2018-04-05 06:30:35
Como toda a gente te explica Apache Kafka: é uma fila de mensagens contínua

Apache Storm: is continuous processing tool

Aqui, neste aspecto, o Kafka irá obter os dados de qualquer site como o Fb, o Twitter, usando o API's e que os dados são processados usando o Apache Storm e você pode armazenar os dados processados em qualquer banco de dados que quiser.

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

Segue-o e terás uma ideia.
 3
Author: syed jameer, 2017-02-08 12:12:25
Quando tenho um caso de uso que me obriga a visualizar ou alertar sobre padrões( pense nas tendências do twitter), enquanto continuo a processar os eventos, tenho vários padrões.
NiFi me permitiria processar um evento e atualizar uma loja de dados persistente com baixa agregação de lote(er) com muito, muito pouca codificação personalizada.
Storm (lotes de codificação personalizada) permite-me quase acesso em tempo real aos eventos de tendência.
Se eu puder esperar por muitos segundos, então eu posso sair de kafka, em hdfs (Parquet) e processo.
Se precisar de saber em segundos, preciso de NiFi, e provavelmente até de Storm. (Pense em monitorar milhares de estações terrestres, onde eu preciso ver pequenas condições climáticas da região para avisos de tornados).
 0
Author: Daemeon, 2018-05-07 06:04:43