wake-up-neo.com

Apache Kafka vs Apache Storm

Apache Kafka: Distributed Messaging System
Apache Storm: Echtzeit-Nachrichtenverarbeitung

Wie können wir beide Technologien in einer Echtzeit-Datenpipeline für die Verarbeitung von Ereignisdaten verwenden?

In Bezug auf die Echtzeitdaten-Pipeline scheinen mir beide den Job identisch zu machen. Wie können wir beide Technologien in einer Datenpipeline verwenden?

89
Ananth Duari

Sie verwenden Apache Kafka als verteilte und robuste Warteschlange, die große Datenmengen verarbeiten kann und es Ihnen ermöglicht, Nachrichten von einem Endpunkt an einen anderen weiterzuleiten.

Storm ist keine Warteschlange. Es handelt sich um ein System mit verteilten Echtzeitverarbeitungsfunktionen, dh Sie können alle Arten von Manipulationen an Echtzeitdaten parallel ausführen.

Der allgemeine Ablauf dieser Tools (wie ich es kenne) sieht folgendermaßen aus:

echtzeitsystem -> Kafka -> Storm -> NoSql -> BI (optional)

Damit Ihre Echtzeit-App große Datenmengen verarbeitet, sendet sie diese an die Warteschlange Kafka. Storm ruft die Daten aus kafka ab und wendet einige erforderliche Manipulationen an In der Regel möchten Sie einige Vorteile aus diesen Daten ziehen, also senden Sie sie entweder für zusätzliche BI-Berechnungen an eine Nosql-Datenbank, oder Sie können diese NoSql-Datei einfach von einem anderen System aus abfragen.

151
forhas

Kafka und Storm verfolgen einen etwas anderen Zweck:

Kafka ist ein verteilter Nachrichtenbroker, der eine große Anzahl von Nachrichten pro Sekunde verarbeiten kann. Es verwendet das Publish-Subscribe-Paradigma und stützt sich auf Themen und Partitionen. Kafka verwendet Zookeeper, um den Status zwischen Brokern zu teilen und zu speichern. Kafka ist grundsätzlich für die Übertragung von Nachrichten von einem Computer auf einen anderen verantwortlich.

Storm ist ein skalierbares, fehlertolerantes Echtzeit-Analysesystem (denken Sie in Echtzeit wie Hadoop). Es verwendet Daten aus Quellen (Ausgüsse) und leitet sie an die Pipeline (Schrauben) weiter. Sie können sie in der Topologie kombinieren. Storm ist also im Grunde eine Recheneinheit (Aggregation, maschinelles Lernen).


Sie können sie aber auch zusammen verwenden: Ihre Anwendung verwendet beispielsweise kafka), um Daten an andere Server zu senden, auf denen Storm Berechnungen vornimmt.

35
Salvador Dali

Ich weiß, dass dies ein älterer Thread ist und die Vergleiche von Apache Kafka und Storm waren gültig und korrekt, als sie geschrieben wurden, aber es ist erwähnenswert, dass Apache Kafka hat sich im Laufe der Jahre stark weiterentwickelt und enthält seit Version 0.10 (April 2016) Kafka eine Kafka= Streams-API, die Stream-Verarbeitungsfunktionen bietet, ohne dass dies erforderlich ist Zusätzliche Software wie Storm. Kafka enthält auch die Connect-API zum Verbinden mit verschiedenen Datenquellen und -senken (-zielen).

Ankündigung Blog - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Aktuelle Apache-Dokumentation - https://kafka.Apache.org/documentation/streams/

In 0.11 Kafka wurde die Stream-Verarbeitungsfunktionalität weiter erweitert, um Exactly Once Semantics und Transactions bereitzustellen.

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

27
Hans Jespersen

So funktioniert es

Kafka - Um einen Echtzeit-Stream bereitzustellen

Sturm - Um einige Operationen an diesem Stream auszuführen

Sie können sich das GitHub-Projekt ansehen https://github.com/abhishekgoel137/kafka-nodejs-d3js .

(D3js ist eine Graphendarstellungsbibliothek)

Idealfall:

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

Dieses Repository basiert auf:

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

Wie jeder erklären Sie, dass Apache Kafka: kontinuierliche Messaging-Warteschlange ist

Apache Storm: ist ein kontinuierliches Verarbeitungswerkzeug

hier in diesem Aspekt Kafka wird die Daten von jeder Website wie FB, Twitter unter Verwendung von APIs erhalten und diese Daten werden unter Verwendung von Apache Storm verarbeitet und Sie können die verarbeiteten Daten in einer beliebigen Datenbank speichern mögen.

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

Folgen Sie ihm einfach, Sie werden eine Idee bekommen

4
syed jameer

Wenn ich einen Anwendungsfall habe, bei dem ich Muster visualisieren oder warnen muss (denken Sie an Twitter-Trends), während ich die Ereignisse weiter verarbeite, gibt es mehrere Muster.
Mit NiFi könnte ich ein Ereignis verarbeiten und einen persistenten Datenspeicher mit geringer (er) Batch-Aggregation und sehr, sehr geringer benutzerdefinierter Codierung aktualisieren.
Storm (viele benutzerdefinierte Codierungen) ermöglicht mir den Zugriff auf die Trendereignisse in nahezu Echtzeit.
Wenn ich viele Sekunden warten kann, kann ich aus kafka heraus in hdfs (Parkett) stapeln und verarbeiten.
Wenn ich es in Sekunden wissen will, brauche ich NiFi und wahrscheinlich sogar Storm. (Denken Sie daran, Tausende von Bodenstationen zu überwachen, bei denen die Wetterbedingungen in kleinen Regionen für Tornado-Warnungen angezeigt werden müssen.).

2
Daemeon