Funkenarchitektur | Apache Spark-Architektur für Dateningenieure

Inhalt

Überblick

  • Erfahren Sie mehr über die Spark-Architektur
  • Erfahren Sie mehr über die verschiedenen Ausführungsmodi

Einführung

Apache Spark es un motor informático unificado y un conjunto de bibliotecas para el procesamiento de datos en paralelo en clústeres de computadoras. Es ist die am weitesten entwickelte Open-Source-Engine für diese Aufgabe, Dies macht es zu einem Standardwerkzeug für jeden Entwickler oder Datenwissenschaftler, der sich für Big Data interessiert.

Spark unterstützt mehrere weit verbreitete Programmiersprachen (Python, Java, Skala y R), enthält Bibliotheken für verschiedene Aufgaben von SQL über Streaming bis hin zu Machine Learning, und Spark läuft überall, von einem Laptop bis zu einem Cluster de cientos de servidores. Dies macht es zu einem einfachen System für den Einstieg und die Skalierung auf Big Data-Verarbeitung oder unglaublich großen Umfang..

Funkenarchitektur

Mehr als 500 Mitarbeiter von 200 für den Kodex verantwortlichen Institutionen und einer Nutzerbasis von mehr als 225,000 Mitglieder, Apache Spark hat sich in allen wichtigen Branchen zum gebräuchlichsten und gefragtesten Big-Data-Framework entwickelt. E-Commerce-Unternehmen wie Alibaba, Social-Media-Unternehmen wie Tencent und die chinesische Suchmaschine Baidu betreiben im großen Stil Apache-Spark-Operationen.

Dieser Beitrag ist eine einmalige Ressource, die mithilfe eines Spark-Architekturdiagramms einen Überblick über die Spark-Architektur bietet..

Inhaltsverzeichnis

  • Die Architektur einer Spark-Anwendung
    • Sparks Fahrer
    • Die Funkenvollstrecker
    • Der Clusteradministrator
  • Arten von Cluster-Managern
  • Ausführungsmodi
    • Cluster-Modus
    • Kundenweg
    • Lokalbetrieb

Die Architektur einer Spark-Anwendung

Im Folgenden sind die High-Level-Komponenten der Apache Spark-Anwendungsarchitektur aufgeführt:

Sparks Fahrer

Der Treiber ist das Verfahren „auf dem fahrersitz“ aus Ihrer Spark-Anwendung. Es ist der Controller für die Ausführung einer Spark-Anwendung und verwaltet alle Zustände des Spark-Clusters (Status und Aufgaben der Ausführenden). Sie müssen mit dem Clusteradministrator interagieren, um physische Ressourcen zu erhalten und Executoren auszuführen.

Am Ende des Tages, Dies ist nur ein Vorgang auf einer physischen Maschine, der für die Aufrechterhaltung des Status der auf dem Cluster ausgeführten Anwendung verantwortlich ist.

Die Funkenvollstrecker

Spark-Ausführer sind die Prozesse, die die vom Spark-Controller zugewiesenen Aufgaben ausführen. Die Testamentsvollstrecker tragen eine grundlegende Verantwortung: übernehmen die vom Fahrer zugewiesenen Aufgaben, führe sie aus und berichte über ihren Status (Erfolg oder Misserfolg) und Ergebnisse. Jede Spark-Anwendung hat ihre eigenen unabhängigen Ausführungsprozesse.

Der Clusteradministrator

Spark Driver und Executors existieren nicht in einem Vakuum, und hier kommt der Clustermanager ins Spiel. Der Cluster-Administrator ist für die Verwaltung eines Clusters von Maschinen verantwortlich, auf denen Ihre Spark-Anwendungen ausgeführt werden. Etwas verwirrend, ein Cluster-Administrator hat seine eigenen Abstraktionen von „Regler“ (manchmal Lehrer genannt) Ja „Arbeiter“.

Der Hauptunterschied besteht darin, dass sie eher mit physischen Maschinen als mit Prozessen verbunden sind (wie sie in Spark sind). La máquina a la izquierda de la ilustración es el Knoten de controlador de Cluster Manager. Die Kreise stellen Daemon-Prozesse dar, die von jedem der einzelnen Worker-Knoten ausgeführt und verwaltet werden. Es wird noch keine Spark-Anwendung ausgeführt; Dies sind nur die Cluster-Manager-Prozesse.

Wenn es Zeit ist, eine Spark-Anwendung auszuführen, Wir fordern Ressourcen vom Clusteradministrator an, um es auszuführen. Je nachdem, wie unsere Anwendung konfiguriert ist, Dies kann einen Ort zum Ausführen des Spark-Controllers oder nur Ressourcen für die Executoren unserer Spark-Anwendung sein. Während der Ausführung der Spark-Anwendung, Der Cluster-Administrator ist für die Verwaltung der zugrunde liegenden Maschinen verantwortlich, auf denen unsere Anwendung ausgeführt wird.

Funkenarchitektur - Cluster-Administrator

Es gibt einige nützliche Dinge, auf die Sie bei dieser Architektur achten sollten:

  1. Jede Anwendung hat ihre eigenen ausführenden Prozesse, die während der gesamten Anwendung aktiv bleiben und Multithread-Aufgaben ausführen. Dies hat den Vorteil, die Anwendungen voneinander zu isolieren., beides auf der Programmierseite (jeder Controller plant seine eigenen Aufgaben) als Executor-Seite (unterschiedliche Anwendungstasks laufen auf unterschiedlichen JVMs).
    Trotz dieses, es bedeutet auch, dass die Daten nicht zwischen verschiedenen Spark-Anwendungen geteilt werden können (Instanzen von SparkContext) ohne sie auf ein externes Speichersystem zu schreiben.
  2. Spark ist unabhängig vom zugrunde liegenden Clusteradministrator. Solange Sie Prozesse ausführen können und diese miteinander kommunizieren, es ist auch in einem Cluster-Administrator, der auch andere Anwendungen unterstützt, relativ einfach auszuführen (als Beispiel, Monate / GARN).
  3. Das Controller-Programm muss während seiner gesamten Lebensdauer eingehende Verbindungen von seinen Executoren abhören und akzeptieren (als Beispiel, beobachten spark.driver.port in den Netzwerkeinstellungen). Als solche, Controller-Programm muss von Worker-Knoten aus über das Netzwerk adressierbar sein.
  4. Weil der Controller Aufgaben auf dem Cluster plant, muss in der Nähe von Worker-Knoten ausgeführt werden, vorzugsweise im selben lokalen Netzwerk. Wenn Sie Anfragen aus der Ferne an den Cluster senden möchten, Es ist besser, einen RPC für den Controller zu öffnen und Operationen aus der Nähe senden zu lassen, als einen Controller außerhalb von Worker-Knoten auszuführen.

Arten von Clusteradministratoren

Im Augenblick, das System unterstützt mehrere Cluster-Administratoren:

  • Einzigartig sein – ein einfacher Cluster-Manager, der in Spark enthalten ist und das Einrichten eines Clusters erleichtert.
  • Apache Mesos – un administrador de clúster general que además puede ejecutar Hadoop Karte verkleinern y aplicaciones de servicio.
  • Hadoop HILO – der Ressourcenmanager in Hadoop 2.
  • Gouverneure – ein Open-Source-System zur Automatisierung der Bereitstellung, Skalieren und Verwalten von containerisierten Anwendungen.

Es gibt ein Drittprojekt (nicht vom Spark-Projekt unterstützt) um Unterstützung hinzuzufügen für Nomaden als Clusteradministrator.

Ausführungsmodi

Ein Ausführungsmodus gibt Ihnen die Möglichkeit zu bestimmen, wo sich die oben genannten Ressourcen physisch befinden, wenn Sie Ihre Anwendung ausführen. Sie haben drei Modi zur Auswahl:

  1. Cluster-Modus
  2. Kundenweg
  3. Lokalbetrieb

Cluster-Modus

Der Cluster-Modus ist wahrscheinlich die gebräuchlichste Methode zum Ausführen von Spark-Anwendungen. Im Cluster-Modus, ein Benutzer sendet eine JAR, ein Python-Skript oder ein vorkompiliertes R-Skript an einen Cluster-Administrator. Nach, der Cluster-Administrator startet die Controller-Prozedur auf einem Worker-Knoten innerhalb des Clusters, gleichzeitig der ausführenden Prozesse. Dies bedeutet, dass der Clusteradministrator für die Pflege aller Prozesse im Zusammenhang mit der Spark-Anwendung verantwortlich ist..

Kundenweg

Der Client-Modus ist fast identisch mit dem Cluster-Modus, außer dass der Spark-Treiber auf dem Client-Rechner verbleibt, der die Anfrage gesendet hat. Dies bedeutet, dass der Client-Rechner für die Wartung der Spark-Controller-Prozedur verantwortlich ist und der Cluster-Administrator die ausgeführten Prozesse verwaltet.. Diese Maschinen sind allgemein als Link-Gate-Maschinen oder Edge-Nodes bekannt..

Lokalbetrieb

Der lokale Modus ist eine deutliche Abweichung von den beiden vorherigen Modi: Führen Sie die gesamte Spark-Anwendung auf einem einzigen Computer aus. Erzielen Sie Parallelität durch Threads auf dieser einzelnen Maschine. Dies ist eine gängige Methode, um Spark zu lernen, Testen Sie Ihre Anwendungen oder experimentieren Sie iterativ mit lokaler Entwicklung.

Trotz dieses, Wir empfehlen nicht, den lokalen Modus zum Ausführen von Produktionsanwendungen zu verwenden.

Fazit

Zusammenfassend, Spark hilft uns dabei, schwere, rechenintensive Jobs in kleinere, präzisere Aufgaben aufzuteilen, die dann von Worker-Knoten ausgeführt werden.. Es erreicht auch Echtzeit- oder archivierte Datenverarbeitung mit seiner Basisarchitektur..

Ich empfehle Ihnen, sich die folgenden Data-Engineering-Ressourcen anzusehen, um Ihr Wissen zu erweitern:

Ich hoffe der Beitrag hat dir gefallen. Bei Fragen zu diesem Beitrag, lass es mich im Kommentarbereich unten wissen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher