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.