web-dev-qa-db-fra.com

Apache Kafka vs Apache Storm

Apache Kafka: système de messagerie distribué
Apache Storm: traitement des messages en temps réel

Comment pouvons-nous utiliser les deux technologies dans un pipeline de données en temps réel pour traiter les données d'événement?

En termes de pipeline de données en temps réel, les deux me semblent faire le travail de la même manière. Comment pouvons-nous utiliser les deux technologies sur un pipeline de données?

89
Ananth Duari

Vous utilisez Apache Kafka) en tant que file d'attente distribuée et robuste capable de gérer des données volumineuses et de transmettre des messages d'un point de terminaison à un autre.

Storm n'est pas une file d'attente. C'est un système qui a des capacités de traitement en temps réel réparties, ce qui signifie que vous pouvez exécuter toutes sortes de manipulations sur des données en temps réel en parallèle.

Le flux commun de ces outils (tel que je le connais) va comme suit:

système temps réel -> Kafka -> Tempête -> NoSql -> BI (facultatif)

Pour que votre application traite en temps réel des données volumineuses, les envoie à la file d'attente Kafka. Storm extrait les données de kafka et applique certaines manipulations requises.) vous souhaitez généralement obtenir certains avantages de ces données. Vous pouvez donc les envoyer à une base de données Nosql pour des calculs BI supplémentaires, ou vous pouvez simplement interroger ce NoSql à partir de tout autre système.

151
forhas

Kafka et Storm ont un but légèrement différent:

Kafka est un courtier de messages distribué capable de gérer une grande quantité de messages par seconde. Il utilise le paradigme publish-subscribe et repose sur des sujets et des partitions. Kafka utilise Zookeeper pour partager et sauvegarder l’état entre les courtiers. So Kafka est essentiellement responsable du transfert des messages d’une machine à une autre.

Storm est un système analytique en temps réel, évolutif et tolérant aux pannes (pensez comme Hadoop en temps réel). Il consomme des données provenant de sources (becs) et les transmet au pipeline (boulons). Vous pouvez les combiner dans la topologie. Donc, Storm est fondamentalement une unité de calcul (agrégation, apprentissage automatique).


Mais vous pouvez les utiliser ensemble: votre application utilise par exemple kafka pour envoyer des données à d'autres serveurs qui utilisent tempo pour effectuer des calculs).

35
Salvador Dali

Je sais qu'il s'agit d'un fil plus ancien et que les comparaisons d'Apache Kafka et de Storm étaient valides et correctes au moment de leur rédaction), mais il convient de noter qu'Apache Kafka a beaucoup évolué au fil des ans et depuis la version 0.10 (avril 2016) Kafka inclut une API Kafka Streams qui fournit des capacités de traitement de flux sans nécessiter de des logiciels supplémentaires tels que Storm. Kafka inclut également l’API Connect pour la connexion à diverses sources et puits (destinations) de données.

Blog d'annonce - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Documentation Apache actuelle - https://kafka.Apache.org/documentation/streams/

Dans 0.11 Kafka), la fonctionnalité de traitement de flux a été étendue pour fournir une sémantique et des transactions exactes.

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

27
Hans Jespersen

Voilà comment cela fonctionne

Kafka - Pour fournir un flux en temps réel

Storm - Pour effectuer certaines opérations sur ce flux

Vous pouvez jeter un coup d'oeil au projet GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .

(D3js est une bibliothèque de représentations graphiques)

Cas idéal:

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

Ce référentiel est basé sur:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
15
Abhishek Goel

Comme tout le monde vous explique qu'Apache Kafka: est une file d'attente de messagerie continue

Apache Storm: outil de traitement en continu

ici dans cet aspect Kafka obtiendra les données de tout site Web comme FB, Twitter en utilisant des API et ces données seront traitées en utilisant Apache Storm et vous pourrez stocker les données traitées dans les bases de données que vous utiliserez. comme.

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

Suivez-le, vous aurez une idée

4
syed jameer

Lorsque j'ai un cas d'utilisation qui nécessite de visualiser ou d'alerter sur des modèles (pensez aux tendances de Twitter) tout en continuant de traiter les événements, j'ai plusieurs modèles.
NiFi me permettrait de traiter un événement et de mettre à jour un magasin de données persistant avec une agrégation de lots plus faible (très), avec très, très peu de codage personnalisé.
Storm (beaucoup de codes personnalisés) me permet d’accéder presque en temps réel aux événements de tendance.
Si je peux attendre plusieurs secondes, je peux alors sortir en lots de kafka, en hdfs (Parquet) et procéder au traitement.
Si j'ai besoin de savoir en quelques secondes, j'ai besoin de NiFi et probablement même de Storm. (Pensez à surveiller des milliers de stations terriennes, où j'ai besoin de voir les conditions météorologiques de petites régions pour les avertissements de tornade).

2
Daemeon