Verteiltes Computersystem Apache Storm 2.0 verfügbar

sah das Licht bedeutende Veröffentlichung eines verteilten Ereignisverarbeitungssystems Apache Storm 2.0, bemerkenswert für den Übergang zu einer neuen Architektur, die in Java anstelle der zuvor verwendeten Clojure-Sprache implementiert wurde.

Mit dem Projekt können Sie die garantierte Verarbeitung verschiedener Ereignisse in Echtzeit organisieren. Storm kann beispielsweise verwendet werden, um Datenströme in Echtzeit zu analysieren, maschinelle Lernaufgaben auszuführen, kontinuierliches Computing zu organisieren, RPC, ETL usw. zu implementieren. Das System unterstützt Clustering, die Erstellung fehlertoleranter Konfigurationen, einen garantierten Datenverarbeitungsmodus und verfügt über eine hohe Leistung, die ausreicht, um mehr als eine Million Anfragen pro Sekunde auf einem Clusterknoten zu verarbeiten.

Die Integration mit verschiedenen Warteschlangenverarbeitungssystemen und Datenbanktechnologien wird unterstützt. Die Storm-Architektur umfasst den Empfang und die Verarbeitung unstrukturierter, ständig aktualisierter Datenströme mithilfe beliebiger komplexer Prozessoren mit der Möglichkeit, zwischen verschiedenen Berechnungsstufen zu unterteilen. Das Projekt wurde der Apache-Community übergeben, nachdem Twitter BackType übernommen hatte, das Unternehmen, das das Framework ursprünglich entwickelt hatte. In der Praxis wurde Storm in BackType verwendet, um die Reflexion von Ereignissen in Microblogs zu analysieren, indem neue Tweets und die darin verwendeten Links spontan verglichen wurden (z. B. wurde bewertet, wie externe Links oder auf Twitter veröffentlichte Ankündigungen von anderen Teilnehmern erneut gesendet wurden). ).

Die Funktionalität von Storm wird mit der Hadoop-Plattform verglichen, wobei der wesentliche Unterschied darin besteht, dass die Daten nicht in einem Warehouse gespeichert werden, sondern extern aufgenommen und in Echtzeit verarbeitet werden. Storm verfügt nicht über eine integrierte Speicherschicht und die analytische Abfrage wird auf eingehende Daten angewendet, bis sie abgebrochen wird (während Hadoop zeitlich begrenzte MapReduce-Jobs verwendet, nutzt Storm die Idee der kontinuierlichen Ausführung von „Topologien“). Die Ausführung von Handlern kann auf mehrere Server verteilt werden – Storm parallelisiert die Arbeit automatisch mit Threads auf verschiedenen Clusterknoten.

Das System wurde ursprünglich in Clojure geschrieben und läuft in der virtuellen JVM-Maschine. Die Apache Foundation hat eine Initiative zur Migration von Storm auf einen neuen, in Java geschriebenen Kernel gestartet, deren Ergebnisse in der Veröffentlichung von Apache Storm 2.0 vorgeschlagen werden. Alle Grundkomponenten der Plattform sind in Java neu geschrieben. Die Unterstützung für Schreibhandler in Clojure wurde beibehalten, wird jedoch jetzt in Form von Bindungen angeboten. Storm 2.0.0 erfordert Java 8. Das Multithread-Verarbeitungsmodell wurde komplett neu gestaltet und ermöglicht zu erreichen, eine spürbare Leistungssteigerung (bei einigen Topologien wurden Verzögerungen um 50–80 % reduziert).

Verteiltes Computersystem Apache Storm 2.0 verfügbar

Die neue Version bietet außerdem eine neue typisierte Streams-API, mit der Sie Handler mithilfe funktionaler Programmieroperationen definieren können. Die neue API wird auf der Standard-Basis-API implementiert und unterstützt die automatische Zusammenführung von Vorgängen, um deren Verarbeitung zu optimieren. Die Windowing-API für Fensteroperationen bietet jetzt Unterstützung für das Speichern und Wiederherstellen des Status im Backend.

Unterstützung für die Berücksichtigung zusätzlicher Ressourcen bei der Entscheidungsfindung ist nicht darauf beschränkt
CPU und Speicher, z. B. Netzwerk- und GPU-Einstellungen. Es wurden zahlreiche Verbesserungen vorgenommen, um die Integration mit der Plattform sicherzustellen Kafkaeske Zustände. Das Zugangskontrollsystem wurde um die Möglichkeit erweitert, Administratorgruppen zu erstellen und Token zu delegieren. Verbesserungen im Zusammenhang mit der SQL- und Metrikunterstützung hinzugefügt. In der Administratoroberfläche wurden neue Befehle zum Debuggen des Clusterstatus angezeigt.

Anwendungsgebiete für Storm:

  • Verarbeitung von Strömen neuer Daten oder Datenbankaktualisierungen in Echtzeit;
  • Kontinuierliches Computing: Storm kann kontinuierliche Abfragen ausführen und kontinuierliche Streams verarbeiten und dem Client Verarbeitungsergebnisse in Echtzeit liefern.
  • Distributed Remote Procedure Call (RPC): Storm kann zur parallelen Ausführung ressourcenintensiver Abfragen verwendet werden. Ein Job („Topologie“) in Storm ist eine über Knoten verteilte Funktion, die auf das Eintreffen von Nachrichten wartet, die verarbeitet werden müssen. Nach dem Empfang einer Nachricht verarbeitet die Funktion diese im lokalen Kontext und gibt das Ergebnis zurück. Ein Beispiel für die Verwendung von verteiltem RPC wäre die parallele Verarbeitung von Suchanfragen oder die Durchführung von Operationen an einer großen Menge von Mengen.

Sturmfunktionen:

  • Ein einfaches Programmiermodell, das die Datenverarbeitung in Echtzeit erheblich vereinfacht.
  • Unterstützung für alle Programmiersprachen. Module sind für Java, Ruby und Python verfügbar, die Anpassung an andere Sprachen ist dank eines sehr einfachen Kommunikationsprotokolls, dessen Unterstützung etwa 100 Codezeilen erfordert, einfach;
  • Fehlertoleranz: Um einen Datenverarbeitungsauftrag auszuführen, müssen Sie eine JAR-Datei mit Code generieren. Storm verteilt diese JAR-Datei selbstständig über die Clusterknoten, verbindet die damit verbundenen Handler und organisiert die Überwachung. Wenn der Job abgeschlossen ist, wird der Code automatisch auf allen Knoten deaktiviert;
  • Horizontale Skalierbarkeit. Alle Berechnungen werden im Parallelmodus durchgeführt; bei steigender Last genügt es, einfach neue Knoten an den Cluster anzuschließen;
  • Zuverlässigkeit. Storm stellt sicher, dass jede eingehende Nachricht mindestens einmal vollständig verarbeitet wird. Die Nachricht wird nur einmal verarbeitet, wenn beim Durchlaufen aller Handler keine Fehler aufgetreten sind. Bei Problemen werden erfolglose Verarbeitungsversuche wiederholt.
  • Geschwindigkeit. Der Code von Storm ist auf hohe Leistung ausgelegt und nutzt das System für schnelle asynchrone Nachrichtenübermittlung ZeroMQ.

Source: opennet.ru

Kommentar hinzufügen