Apache Storm - Cluster-Architektur
Eines der wichtigsten Highlights des Apache Storm ist, dass es fehlertolerant und schnell ist und keine verteilte SPOF-Anwendung (Single Point of Failure) enthält. Wir können Apache Storm auf so vielen Systemen wie nötig installieren, um die Kapazität der Anwendung zu erhöhen.
Schauen wir uns an, wie der Apache Storm-Cluster aufgebaut ist und welche interne Architektur er hat. Das folgende Diagramm zeigt das Clusterdesign.
Apache Storm hat zwei Arten von Knoten: Nimbus (Hauptknoten) und Supervisor(Arbeiterknoten). Nimbus ist die zentrale Komponente von Apache Storm. Die Hauptaufgabe von Nimbus besteht darin, die Storm-Topologie auszuführen. Nimbus analysiert die Topologie und sammelt die auszuführende Aufgabe. Anschließend wird die Aufgabe an einen verfügbaren Supervisor verteilt.
Ein Vorgesetzter hat einen oder mehrere Arbeitsprozesse. Der Supervisor delegiert die Aufgaben an die Arbeitsprozesse. Der Worker-Prozess erzeugt so viele Executoren wie nötig und führt die Aufgabe aus. Apache Storm verwendet ein internes verteiltes Nachrichtensystem für die Kommunikation zwischen Nimbus und Supervisoren.
Komponenten | Beschreibung |
---|---|
Nimbus | Nimbus ist ein Hauptknoten des Storm-Clusters. Alle anderen Knoten im Cluster werden als aufgerufenworker nodes. Der Hauptknoten ist dafür verantwortlich, Daten auf alle Arbeitsknoten zu verteilen, Arbeitsknoten Aufgaben zuzuweisen und Fehler zu überwachen. |
Supervisor | Die Knoten, die den Anweisungen des Nimbus folgen, werden als Supervisors bezeichnet. EINsupervisor hat mehrere Worker-Prozesse und regelt Worker-Prozesse, um die vom Nimbus zugewiesenen Aufgaben zu erledigen. |
Arbeitsprozess | Ein Arbeitsprozess führt Aufgaben aus, die sich auf eine bestimmte Topologie beziehen. Ein Arbeitsprozess führt keine Aufgabe selbst aus, sondern erstellt sieexecutorsund bittet sie, eine bestimmte Aufgabe auszuführen. Ein Arbeitsprozess hat mehrere Ausführende. |
Testamentsvollstrecker | Ein Executor ist nichts anderes als ein einzelner Thread, der von einem Arbeitsprozess erzeugt wird. Ein Executor führt eine oder mehrere Aufgaben aus, jedoch nur für einen bestimmten Auslauf oder Bolzen. |
Aufgabe | Eine Aufgabe führt die eigentliche Datenverarbeitung durch. Es ist also entweder ein Auslauf oder ein Bolzen. |
ZooKeeper-Framework | Apache ZooKeeper ist ein Dienst, der von einem Cluster (einer Gruppe von Knoten) verwendet wird, um sich untereinander zu koordinieren und gemeinsam genutzte Daten mit robusten Synchronisationstechniken zu verwalten. Nimbus ist zustandslos, daher hängt es von ZooKeeper ab, den Status des Arbeitsknotens zu überwachen. ZooKeeper hilft dem Supervisor bei der Interaktion mit dem Nimbus. Es ist verantwortlich, den Zustand von Nimbus und Supervisor aufrechtzuerhalten. |
Sturm ist staatenlos in der Natur. Obwohl die staatenlose Natur ihre eigenen Nachteile hat, hilft sie Storm tatsächlich dabei, Echtzeitdaten bestmöglich und schnell zu verarbeiten.
Storm ist jedoch nicht ganz staatenlos. Es speichert seinen Status in Apache ZooKeeper. Da der Status in Apache ZooKeeper verfügbar ist, kann ein ausgefallener Nimbus neu gestartet und an der Stelle ausgeführt werden, an der er sich befindet. In der Regel mögen Service-Monitoring-Toolsmonit überwacht Nimbus und startet es neu, wenn ein Fehler auftritt.
Apache Storm hat auch eine erweiterte Topologie namens Trident Topologymit Statuswartung und bietet auch eine High-Level-API wie Pig. Wir werden all diese Funktionen in den kommenden Kapiteln diskutieren.