Kompromisse zwischen Storm und Hadoop (MapReduce)

12

Kann mir jemand freundlich etwas über die Kompromisse erzählen, die bei der Auswahl zwischen Storm und MapReduce in Hadoop Cluster für die Datenverarbeitung entstehen? Abgesehen von der offensichtlichen Tatsache ist Hadoop (Verarbeitung über MapReduce in einem Hadoop-Cluster) natürlich ein Stapelverarbeitungssystem und Storm ein Echtzeitverarbeitungssystem.

Ich habe ein bisschen mit Hadoop Eco System gearbeitet, aber ich habe nicht mit Storm gearbeitet. Nachdem ich viele Präsentationen und Artikel durchgesehen habe, konnte ich immer noch keine zufriedenstellende und umfassende Antwort finden.

Hinweis: Der Begriff Kompromiss soll hier nicht mit ähnlichen Dingen verglichen werden. Es soll die Konsequenzen darstellen, die entstehen, wenn Ergebnisse in Echtzeit abgerufen werden, die in einem Stapelverarbeitungssystem nicht vorhanden sind.

mbbce
quelle

Antworten:

13

MapReduce : Ein fehlertolerantes verteiltes Rechensystem. Mit MapReduce können Sie über große Datenmengen hinweg arbeiten - und dabei viel Arbeit aufwenden, um Ausfälle aufgrund von Hardware zu vermeiden. MapReduce ist eine schlechte Wahl für die schnelle Berechnung von Ergebnissen, da es langsam ist. (Ein typischer MapReduce-Auftrag dauert in der Größenordnung von Minuten oder Stunden, nicht Mikrosekunden.)

Ein MapReduce-Job verwendet eine Datei (oder einen Datenspeicher) als Eingabe und schreibt eine Ergebnisdatei. Wenn Sie möchten, dass diese Ergebnisse einer Anwendung zur Verfügung stehen, liegt es in Ihrer Verantwortung, diese Daten an einem Ort bereitzustellen, auf den zugegriffen werden kann. Dies ist wahrscheinlich langsam und es wird eine Verzögerung zwischen den angezeigten Werten und den Werten geben, die Ihr System im aktuellen Zustand darstellen.

Ein wichtiger Unterschied bei der Verwendung von MapReduce zum Erstellen von Echtzeitsystemen ist das Trainieren Ihres Modells und das Anwenden Ihres Modells. Wenn Sie der Meinung sind, dass sich Ihre Modellparameter nicht schnell ändern, können Sie sie mit MapReduce anpassen und dann über einen Mechanismus verfügen, um auf diese Voreinstellungsparameter zuzugreifen, wenn Sie Ihr Modell anwenden möchten.

Storm : Ein Echtzeit-Streaming-Rechensystem. Storm ist ein Online-Framework, dh ein Dienst, der mit einer laufenden Anwendung interagiert. Im Gegensatz zu MapReduce erhält es kleine Datenstücke (keine ganze Datei), während diese in Ihrer Anwendung verarbeitet werden. Sie definieren eine DAG von Operationen, die an den Daten ausgeführt werden sollen. Ein häufiger und einfacher Anwendungsfall für Storm ist das Verfolgen von Zählern und das Auffüllen eines Echtzeit-Dashboards mit diesen Informationen.

Storm hat (notwendigerweise) nichts mit dem dauerhaften Speichern Ihrer Daten zu tun. In diesem Fall ist Streaming eine andere Möglichkeit, um zu sagen, dass Sie die Informationen behalten und den Rest wegwerfen müssen. In Wirklichkeit haben Sie wahrscheinlich eine Persistenzschicht in Ihrer Anwendung, die die Daten bereits aufgezeichnet hat, und dies ist eine gute und gerechtfertigte Trennung von Bedenken.

Wenn Sie mehr wissen möchten ... Wenn Sie mehr über Echtzeitsysteme erfahren möchten, die für MR-Parameter geeignet sind, und die Modelle auf andere Weise anwenden möchten, finden Sie hier Folien für einen Vortrag, den ich zum Aufbau von Echtzeitempfehlungs-Engines gehalten habe HBase.

Google News Personalization: Scalable Online Collaborative Filtering ist ein hervorragendes Papier, das Echtzeitzählung und Beständigkeit auf interessante Weise miteinander verbindet

Eine andere interessante Ehe von MR und Storm ist SummingBird . Mit Summingbird können Sie Datenanalyseoperationen definieren, die über Storm oder MR angewendet werden können.

j_houg
quelle
9

Das ist so, als würden Sie nach den Kompromissen zwischen der Bratpfanne und Ihrer Besteckschublade fragen. Das sind nicht zwei Dinge, die man wirklich vergleicht. Sie können sie zusammen als Teil eines größeren Projekts verwenden.

Hadoop selbst ist keine Sache, sondern ein Name für einen Zusammenschluss von Diensten wie HDFS, Hive, HBase, MapReduce usw. Storm wird bei einigen dieser Dienste verwendet, z. B. HDFS oder HBase. Es ist ein Stream-Processing-Framework. Es gibt andere im erweiterten Hadoop-Ökosystem, wie beispielsweise Spark Streaming.

Wann würden Sie ein Stream-Processing-Framework auswählen? wenn Sie nahezu in Echtzeit auf neue Daten reagieren müssen. Wenn Sie ein solches Tool benötigen, stellen Sie dieses Tool auch bereit.

Sean Owen
quelle
Ich habe die Verarbeitung über MapReduce im Hadoop Echo-System einfach als Hadoop bezeichnet, da dies der häufig verwendete Begriff ist (obwohl dies technisch falsch ist und ich die Frage entsprechend geändert habe).
Mbbce
Vielleicht irre ich mich, aber ich denke, dass das mehr ist, als nur nahezu in Echtzeit zu verarbeiten. Wenn es keine Kompromisse zwischen ihnen gäbe, hätte jeder gerne Dinge in nahezu Echtzeit gemacht. Ein hybrider Ansatz ermöglicht es, (teilweise) das Beste aus beiden Welten herauszuholen. Deshalb wurde Summingbird geschaffen.
Mbbce
1
Ein wesentlicher Unterschied besteht darin, dass ein Stream-Verarbeitungssystem Daten nur einmal berühren kann und selbst keinen Langzeitstatus hat. Einige Probleme können so nicht gelöst werden. Bei Problemen, bei denen dies in Ordnung ist, ist es schneller, ein System zu verwenden, bei dem zunächst keine persistenten Daten in einem (wiederlesbaren) Speicher abgelegt werden müssen. MapReduce ist von Natur aus nicht langsamer als Storm. beides sind behälter. Sie sind unterschiedliche Paradigmen für unterschiedliche Probleme.
Sean Owen
Bedeutet dies, dass solche echtzeitnahen Systeme keine Eingabeaktualisierungen über einen langen Zeitraum hinweg akkumulieren können, wenn sie keinen dauerhaften Langzeitstatus haben? Können Sie mich auf Ressourcen verweisen, die weiter darauf eingehen?
Mbbce
Dies ist eine Art Definition eines Streaming-Systems. Wenn Sie sich ein System vorstellen, das nach Belieben auf einen langfristigen Status zugreifen kann, ist dies kein wirkliches Streaming.
Sean Owen