Ich habe über Storm gelesen und spiele mit den Beispielen von storm-starter herum.
Ich denke, ich habe das Konzept und es gilt sehr gut für viele Fälle. Ich habe ein Testprojekt, um mehr darüber zu erfahren, aber ich frage mich, ob Storm wirklich dafür geeignet ist.
Das konzeptionelle Problem, das ich habe, ist mit der "Streaming" -Definition. Es scheint, dass Storms als Charm funktioniert, der einen Stream abonniert und ihn in Echtzeit verarbeitet, aber ich habe eigentlich keinen Stream, sondern eine endliche Sammlung von Daten, die ich verarbeiten möchte.
Ich weiß, dass es dafür einen Vorgeschmack gibt, aber ich interessiere mich für die Echtzeitfähigkeiten von Storm sowie für andere interessante Punkte, die Nathan, der Storm schrieb, in seinen Gesprächen erwähnt.
Ich habe mich also gefragt, ob Leute Spouts schreiben, die non-streaming-APIs abfragen und dann die Ergebnisse diffundieren, um vielleicht einen Stream zu emulieren?
Der zweite wichtige Punkt ist, dass Storm-Topologien die Verarbeitung nie bis zur Unterbrechung beenden, was wiederum nicht auf meinen Fall zutrifft. Ich möchte, dass meine Topologie weiß, dass, sobald meine endliche Liste von Quelldaten beendet ist, die Verarbeitung beendet werden kann und ein Endergebnis ausgegeben werden kann.
Macht das also alles in Storm-Begriffen Sinn oder schaue ich auf das Falsche? Wenn ja, welche Alternativen schlagen Sie für diese Art von Echtzeitparallelverarbeitung vor?
Danke!
Die Antwort finden Sie in der google storm-Gruppe . Es scheint, dass DRCP-Topologien ein Tupel mit Parametern ausgeben, die vom DRCP-Auslauf als Stream empfangen werden, und dann nach Beendigung der Verarbeitung zurück zeigt (unter Verwendung der eindeutigen ID, die Request ID genannt wird).
In diesem Thread heißt es, dass Hadoop wahrscheinlich am besten für diese Fälle geeignet ist, es sei denn, die Daten sind nicht groß genug und können jederzeit vollständig verarbeitet werden.
Es ist sicher möglich, mit Storm eine endliche Datensammlung zu verarbeiten und zu stoppen, sobald alle Elemente verarbeitet sind. DRPC-Topologien sind eine Möglichkeit, dies zu tun, aber Ihre eigene Lösung zu rollen ist nicht schwer.
Die Idee ist, zu verfolgen, welche Elemente in Ihrem endlichen Datensatz verarbeitet wurden oder nicht, was mit den ack () - und fail () -Methoden im Spout leicht gemacht werden kann.
Wenn Sie nach einer schnellen, interaktiv nutzbaren und entwicklungsfreundlichen Batch-Verarbeitungslösung suchen, sollten Sie sich stattdessen Apache Spark ansehen Sturm.
Trident / DRPC ist nützlicher, wenn Sie Abfragen für Ihre fortlaufende Berechnung ausführen möchten.
Tags und Links apache-storm