Überblick
- Erfahren Sie mehr über die Spark-Architektur
- Erfahren Sie mehr über die verschiedenen Ausführungsmodi
Einführung
Apache SparkApache Spark ist eine Open-Source-Datenverarbeitungs-Engine, die die schnelle und effiziente Analyse großer Informationsmengen ermöglicht. Sein Design basiert auf dem Speicher, Dies optimiert die Leistung im Vergleich zu anderen Batch-Verarbeitungstools. Spark wird häufig in Big-Data-Anwendungen verwendet, Maschinelles Lernen und Echtzeitanalysen, Dank seiner Benutzerfreundlichkeit und... 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 ClusterEin Cluster ist eine Gruppe miteinander verbundener Unternehmen und Organisationen, die im selben Sektor oder geografischen Gebiet tätig sind, und die zusammenarbeiten, um ihre Wettbewerbsfähigkeit zu verbessern. Diese Gruppierungen ermöglichen die gemeinsame Nutzung von Ressourcen, Wissen und Technologien, Förderung von Innovation und Wirtschaftswachstum. Cluster können sich über eine Vielzahl von Branchen erstrecken, Von der Technologie bis zur Landwirtschaft, und sind von grundlegender Bedeutung für die regionale Entwicklung und die Schaffung von Arbeitsplätzen.... 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..

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 KnotenNodo ist eine digitale Plattform, die die Verbindung zwischen Fachleuten und Unternehmen auf der Suche nach Talenten erleichtert. Durch ein intuitives System, Ermöglicht Benutzern das Erstellen von Profilen, Erfahrungen austauschen und Zugang zu Stellenangeboten erhalten. Der Fokus auf Zusammenarbeit und Networking macht Nodo zu einem wertvollen Werkzeug für diejenigen, die ihr berufliches Netzwerk erweitern und Projekte finden möchten, die mit ihren Fähigkeiten und Zielen übereinstimmen.... 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.

Es gibt einige nützliche Dinge, auf die Sie bei dieser Architektur achten sollten:
- 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. - 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 / GARNYARN ist ein Paketmanager für JavaScript, der die effiziente Installation und Verwaltung von Abhängigkeiten in Entwicklungsprojekten ermöglicht. Unterstützt von Facebook, Es zeichnet sich durch seine Schnelligkeit und Sicherheit im Vergleich zu anderen Managern aus. YARN verwendet ein Cache-System, um Installationen zu optimieren, und stellt eine Sperrdatei bereit, um die Konsistenz der Abhängigkeitsversionen in verschiedenen Entwicklungsumgebungen zu gewährleisten....).
- 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.
- 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 verkleinernMapReduce ist ein Programmiermodell, das entwickelt wurde, um große Datensätze effizient zu verarbeiten und zu generieren. Unterstützt von Google, Bei diesem Ansatz wird die Arbeit in kleinere Aufgaben aufgeteilt, die auf mehrere Knoten in einem Cluster verteilt sind. Jeder Knoten verarbeitet seinen Teil und dann werden die Ergebnisse kombiniert. Mit dieser Methode können Sie Anwendungen skalieren und große Informationsmengen verarbeiten, in der Welt von Big Data von grundlegender Bedeutung zu sein.... 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:
- Cluster-Modus
- Kundenweg
- 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.



