Das System für verteiltes Rechnen Apache Storm 2.0 ist verfügbar

Erblickte das Licht der Welt bedeutende Veröffentlichung des Systems zur verteilten Ereignisverarbeitung Apache Storm 2.0, bemerkenswert durch den Wechsel zu einer neuen Architektur, die in der Programmiersprache Java implementiert ist, anstelle der zuvor verwendeten Sprache Clojure.

Das Projekt ermöglicht die garantierte Verarbeitung verschiedener Ereignisse in Echtzeit. Beispielsweise kann Storm zur Analyse von Echtzeitdatenströmen, zur Durchführung von Aufgaben für maschinelles Lernen, zur Organisation kontinuierlicher Berechnungen, zur Umsetzung von RPC, ETL usw. eingesetzt werden. Das System unterstützt Clustering, die Erstellung ausfallsicherer Konfigurationen, einen Modus für garantierte Datenverarbeitung und bietet eine hohe Leistung, die ausreicht, um mehr als eine Million Anfragen pro Sekunde auf einem Knoten des Clusters zu verarbeiten.

Die Integration mit verschiedenen Warteschlangenverarbeitungssystemen und Datenbanktechnologien wird unterstützt. Die Architektur von Storm sieht die Annahme und Verarbeitung von unstrukturierten, kontinuierlich aktualisierten Datenströmen unter Verwendung beliebig komplexer Verarbeiter mit der Möglichkeit der Partitionierung zwischen verschiedenen Berechnungsstufen vor. Das Projekt wurde der Apache-Community nach der Übernahme von Twitter der Firma BackType, die ursprünglich das Framework entwickelt hatte, übergeben. In der Praxis wurde Storm bei BackType zur Analyse der Ereignisantworten in Microblogs verwendet, indem neue Tweets und die darin verwendeten Links in Echtzeit zugeordnet wurden (zum Beispiel wurde bewertet, wie externe Links oder in Twitter veröffentlichte Ankündigungen von anderen Teilnehmern weiterverbreitet werden).

Die Funktionalität von Storm wird mit der Plattform Hadoop verglichen, wobei das wesentliche Unterscheidungsmerkmal darin besteht, dass die Daten nicht in einem Speicher abgelegt sind, sondern extern ankommen und in Echtzeit verarbeitet werden. In Storm gibt es keine integrierte Schicht zur Organisation von Speicher und analytische Anfragen werden auf die ankommenden Daten angewendet, bis sie storniert werden (während in Hadoop zeitlich begrenzte MapReduce-Jobs verwendet werden, wird in Storm die Idee kontinuierlich ausgeführter „Topologien“ umgesetzt). Die Ausführung der Verarbeiter kann auf mehrere Server verteilt werden - Storm verteilt automatisch die Arbeit mit den Streams auf verschiedene Knoten des Clusters.

Ursprünglich wurde das System in der Programmiersprache Clojure geschrieben und läuft innerhalb der virtuellen Maschine JVM. Im Apache-Projekt wurde eine Initiative zur Migration von Storm auf einen neuen Kern, der in Java geschrieben ist, gestartet, deren Ergebnisse in der Version Apache Storm 2.0 angeboten werden. Alle grundlegenden Komponenten der Plattform wurden in Java neu geschrieben. Die Unterstützung für die Entwicklung von Handlern in Clojure ist erhalten geblieben, wird jedoch nun in Form von Bindings angeboten. Für den Betrieb von Storm 2.0.0 ist Java 8 erforderlich. Das Modell der Multithread-Verarbeitung wurde vollständig überarbeitet, was erlaubt hat, zu erreichen deutliche Leistungssteigerung zu erzielen (für einige Topologien wurden die Latenzen um 50-80 % reduziert).

Das System für verteiltes Rechnen Apache Storm 2.0 ist verfügbar

In der neuen Version wird auch eine neue typisierte API für Streams angeboten, die es ermöglicht, Handler unter Verwendung von funktionalen Programmieroperationen zu definieren. Die neue API wurde über der Standard-API implementiert und unterstützt die automatische Zusammenführung von Operationen zur Optimierung ihrer Verarbeitung. In der API Windowing für Fensteroperationen wurde die Unterstützung für das Speichern und Wiederherstellen des Zustands im Backend hinzugefügt.

Im Scheduler für die Ausführung von Handlern wurde die Unterstützung für die Berücksichtigung zusätzlicher Ressourcen bei Entscheidungen integriert, die nicht auf
CPU und Speicher beschränkt sind, wie Netzwerkparameter und GPU. Zahlreiche Verbesserungen wurden in Bezug auf die Integration mit der Plattform vorgenommen. KafkaDas Zugriffskontrollsystem wurde erweitert, und es ist nun möglich, Administratorgruppen zu erstellen und Token zu delegieren. Verbesserungen im Zusammenhang mit SQL- und Metrikunterstützung wurden hinzugefügt. Im Administrationsinterface sind neue Befehle zur Fehlersuche des Clusterzustands verfügbar.

Anwendungsbereiche von Storm:

  • Echtzeit-Streaming von neuen Daten oder Datenbankaktualisierungen;
  • Kontinuierliche Berechnungen: Storm kann kontinuierliche Abfragen durchführen und kontinuierliche Datenströme verarbeiten, wobei die Verarbeitungsresultate in Echtzeit an den Client gesendet werden.
  • Verteilte Remote-Prozeduraufrufe (RPC): Storm kann zur Gewährleistung der Parallelität bei der Ausführung ressourcenintensiver Anfragen verwendet werden. Ein Task („Topologie“) in Storm stellt eine verteilte Funktion dar, die darauf wartet, Nachrichten zu empfangen, 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 ist die parallele Verarbeitung von Suchanfragen oder die Durchführung von Operationen an einer großen Menge von Mengen.

Merkmale von Storm:

  • Ein einfaches Programmiermodell, das die Verarbeitung von Daten in Echtzeit erheblich vereinfacht;
  • Unterstützung für alle Programmiersprachen. Es gibt Module für die Sprachen Java, Ruby und Python; die Anpassung für andere Sprachen ist dank eines sehr einfachen Kommunikationsprotokolls, dessen Implementierung etwa 100 Codezeilen benötigt, nicht kompliziert;
  • Fehlertoleranz: Um einen Datenverarbeitungsauftrag zu starten, muss eine Jar-Datei mit dem Code erstellt werden. Storm verteilt diese Jar-Datei selbständig über die Knoten des Clusters, verbindet die zugehörigen Verarbeiter und organisiert das Monitoring. Nach Abschluss des Auftrags wird der Code automatisch auf allen Knoten deaktiviert;
  • Horizontale Skalierbarkeit. Alle Berechnungen erfolgen parallel. Bei zunehmender Last genügt es, einfach neue Knoten zum Cluster hinzuzufügen;
  • Zuverlässigkeit. Storm garantiert, dass jede eingehende Nachricht mindestens einmal vollständig verarbeitet wird. Eine Nachricht wird nur dann einmal verarbeitet, wenn bei der Verarbeitung aller Verarbeiter keine Fehler auftreten; treten Probleme auf, werden fehlgeschlagene Verarbeitungsversuche wiederholt.
  • Geschwindigkeit. Der Code von Storm wurde mit Blick auf hohe Leistung geschrieben und nutzt ein System für schnellen asynchronen Nachrichtenaustausch. ZeroMQ.

Quelle: opennet.ru

60GB SSD 8Gb DDR4