1. Starten Sie den Spark-Cluster, der SBIN/START-ALL.SH ausführen soll, und starten Sie den Master- und mehrere Arbeiterknoten. Der Master wird hauptsächlich als Management und Überwachung des Clusters verwendet, und der Arbeiterknoten ist hauptsächlich für die Ausführung verschiedener Anwendungen verantwortlich. Der Masterknoten muss den Arbeiterknoten seinen eigenen Status melden lassen, z. B. die CPU und wie groß der Speicher ist. Dieser Prozess wird durch den Herzschlagmechanismus abgeschlossen
2. Nachdem der Master die Berichtsinformationen des Arbeitnehmers erhalten hat, gibt er den Arbeitern Informationen.
3. Treiber reicht Aufgaben ein, um Cluster zu entfachen [Die Kommunikation zwischen Treiber und Master erfolgt über Akkaaktor, dh der Master ist ein Schauspielermodell im Akkaaktor -Asynchron -Kommunikationsmodell, und der Treiber ist der gleiche. Der Treiber sendet asynchron Registrierungsinformationen (RegisterApplication) asynchron an Master]
V. Im Master werden die Aufgaben bei jedem Arbeiter überwacht und als Ganzes geplant.
5. Der Arbeiterknoten erhält die Aufgabe und beginnt mit der Ausführung. Startet den entsprechenden Ausführungsverfahren auf dem Arbeiterknoten, um auszuführen. Jeder Testamentsvollstrecker verfügt über ein Thread -Pool -Konzept, das mehrere Task -Threads enthält.
6. Executor nimmt die Aufgabe aus dem Thread -Pool aus, um die Daten in den Operationen rddpatition, Transformation und Aktion zu berechnen.
7. Der Arbeiterknoten meldet den Berechnungsstatus an den Treiberknoten
Erstellen Sie RDDs mit lokaler Parallelisierungssammlung
öffentliche Klasse Javalocalsumapp {public static void main (String [] args) {SparkConf conf = new SparkConf (). setAppname ("javalocalsumapp"); <Integer> listRDD = sc.parallelize(list);//Sum Integer sum = listRDD.reduce(new Function2<Integer,Integer,Integer,Integer>(){@Override public Integer call(Integer v1,Integer v2) throws Exception{return v1+v2;}});System.out.println(sum)}}// Functional Bei der Programmierung in Java muss der Compiler auf 1,8 LISTDD.Reduce ((v1, v2) => v1+v2 festgelegt werden.Sparktransformation und Aktionsoperationen
RDD: Elastic Distributed Data Set ist eine Sammlung, die mehrere Quellen unterstützt, einen Fehlermechanismus hat, zwischengespeichert werden und parallele Operationen unterstützt. Ein RDD stellt einen Datensatz in einer Partition dar.
RDD hat zwei Betriebsbetreiber:
Transformation: Transformation ist eine Verzögerungsberechnung. Wenn ein RDD in eine andere RDD umgewandelt wird, wandelt es sich nicht sofort um. Es erinnert sich an die logischen Operationen des Datensatzes.
Aktion: löst den Betrieb von Spark Jobs aus und löst die Berechnung des Conversion -Operators wirklich aus.
Die Rolle des Spark -Operators
Diese Abbildung beschreibt Spark Convertiert RDD durch Operatoren während der Ausführung der Konvertierung. Operatoren sind in RDD definierte Funktionen, die Daten in RDD konvertieren und bedienen können.
Eingabe: Während des Spark -Programms werden die Daten zum Spark aus dem externen Datenraum eingegeben (z. B. verteilter Speicher: Textdatei zum Lesen von HDFs usw., und die parallelisierende Methode tritt in die Skala -Sammlung oder -Daten ein) und die Daten treten in Spark Runtime -Datenraum in Datenblöcke in Datenblöcke um und werden über Blockmanager verwaltet.
Run: Nachdem die Spark -Dateneingabe in Form von RDD eingegeben wurde, kann sie durch einen Transformationsoperator wie Filter usw. weitergeleitet werden. Betreiben Sie die Daten und konvertieren RDD in eine neue RDD. Durch den Aktionsbetreiber gibt Spark den Job ein. Wenn die Daten multiplexiert werden müssen, können die Daten über den Cache -Operator in den Speicher zwischengespürt werden.
Ausgabe: Die Daten nach dem Programmläufen werden ausgegeben, um den Laufzeitraum zu erfassen und im verteilten Speicher (z. B. Saveasttext -Ausgabe an HDFS) oder Scala -Daten oder -Anfassungen zu speichern (sammeln Sie die Ausgabe bei Scala Collection, Returns Scala Int -Typen zurück))
Transformations- und Aktionen Betriebsübersicht
Transformation
MAP (FUNC): Gibt einen neuen verteilten Datensatz zurück, der aus jedem ursprünglichen Element besteht, nachdem sie über die Funktionsfunktion konvertiert wurden
Filter (Func): Gibt einen neuen Datensatz zurück, über die Func -Funktion weitergegeben
FlatMap (Func): Ähnlich wie bei MAP, aber jedes Eingangselement wird auf 0 auf mehrere Ausgabeelemente abgebildet (so ist der Rückgabewert der Func -Funktion ein SEQ, kein einzelnes Element)
Probe (Withreplacement, FRAC, Saatgut): Nach dem gegebenen zufälligen Samen werden Daten mit einer Reihe von FRAC zufällig abgetastet.
Union (OtherDataset): Gibt einen neuen Datensatz zurück, der aus dem ursprünglichen Datensatz und den Parametern besteht
ROUPBYKEY ([Numtasks]): Aufgerufenen Datensatz aus (k, v) Paaren, die einen Datensatz von (k, seq [v]) zurückgeben. Hinweis: Standardmäßig werden 8 parallele Aufgaben für die Gruppierung verwendet. Sie können optionale Parameter der Numtask übergeben und unterschiedliche Aufgaben entsprechend der Datenmenge festlegen.
RedebyKey (Func, [Numtasks]): Wird für einen (k, v) -Paar -Datensatz verwendet, geben Sie einen (k, v) -Paar -Datensatz zurück, der gleiche Wert des Schlüssels wird mit der angegebenen Reduzierung der Reduzierung zusammengefasst. Ähnlich wie bei GroupByKey kann die Anzahl der Aufgaben mit dem zweiten optionalen Parameter konfiguriert werden.
Join (OtherDataset, [Numtasks]): Aufgerufenen Datensatz von Typen (k, v) und (k, w), die ein Paar (k, (v, w)) zurückgeben, und alle Elemente in jedem Schlüssel sind zusammen.
GroupWith (OtherDataset, [Numtasks]): Ein Datensatz von Typen (k, v) und (k, w) aufgerufen und gibt einen Datensatz mit den Komponenten (k, seq [v], sex [w]) Tupel zurück. Dieser Vorgang befindet sich in anderen Rahmenbedingungen, die als CoGroup bezeichnet werden
kartesischer (Andere Dataset): kartesisches Produkt. Wenn jedoch Datensätze t und u aufgerufen werden, wird ein Datensatz von (t, u) -Paar zurückgegeben und alle Elemente mit dem kartesischen Produkt interagieren.
Aktionen
Reduzieren (Func): Aggregieren Sie alle Elemente im Datensatz über Funktionsfunktion. Die Func -Funktion akzeptiert 2 Parameter und gibt einen Wert zurück. Diese Funktion muss zugeordnet werden, um sicherzustellen, dass sie korrekt und gleichzeitig ausgeführt werden kann
Collect (): Geben Sie im Fahrerprogramm alle Elemente des Datensatzes als Array zurück. Dies gibt normalerweise nach Verwendung von Filter oder anderen Vorgängen eine ausreichende Datenuntergruppe mit geringen Daten zurück und gibt direkt die gesamte RDD -Set -Sammlung zurück, wodurch das Treiberprogramm vorgenommen wird
count (): Gibt die Anzahl der Elemente im Datensatz zurück
Nehmen Sie (n): Gibt ein Array zurück, das aus den ersten n -Elementen des Datensatzes besteht. Beachten Sie, dass dieser Vorgang derzeit nicht parallel auf mehreren Knoten ausgeführt wird, sondern der Computer, auf dem sich das Treiberprogramm befindet, und alle Elemente von einer einzigen Maschine berechnet werden (der Speicherdruck des Gateways wird zunehmen und mit Vorsicht verwendet werden)
First (): Gibt das erste Element des Datensatzes zurück (ähnlich wie (1))
SaveTextFile (Pfad): Speichern Sie die Elemente des Datensatzes in Form einer Textdatei vor dem lokalen Dateisystem, HDFS oder einem anderen von Hadoop unterstützten Dateisystem. Spark ruft die ToString -Methode jedes Elements auf und konvertiert sie in eine Textzeile in der Datei.
SaveasSequenceFile (Pfad): Speichern Sie die Elemente des Datensatzes im Format der SequenceFile im angegebenen Verzeichnis, im lokalen System, im HDFS oder in einem anderen von Hadoop unterstützten Dateisystem. Die Elemente von RDD müssen aus Schlüsselwertpaaren bestehen, und sie alle implementieren Hadoops beschreibbare Schnittstelle oder sie können implizit in beschreibbar umgewandelt werden (Spark enthält Conversions von Basistypen wie int, doppelte, String usw.).
foreach (func): Führen Sie den Funktionsfunktion auf jedem Element des Datensatzes aus. Dies wird normalerweise verwendet, um eine Akkumulatorvariable zu aktualisieren oder mit einem externen Speichersystem zu interagieren
WordCount -Ausführungsprozess
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Prinzipien der Spark -Planungsarchitektur. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!