Im Spark Standalone-Modus gibt es Master- und Worker-Knoten.
Hier einige Fragen:
- Bedeutet 2 Worker-Instanz einen Worker-Knoten mit 2 Worker-Prozessen?
- Enthält jede Worker-Instanz einen Executor für eine bestimmte Anwendung (die Speicher, Aufgabe verwaltet) oder einen Worker-Knoten einen Executor?
- Gibt es ein Flussdiagramm, das erklärt, wie Spark zur Laufzeit funktioniert, z. B. die Anzahl der Wörter?
apache-spark
apache-spark-standalone
edwardsbean
quelle
quelle
Ich möchte auf einige gute Antworten eingehen und sie mit wenigen Bildern beschreiben.
Wenn wir sowohl Meister als auch Arbeiter an einem Ort für den Standalone-Modus vertreten.
Wenn Sie neugierig sind, wie Spark mit YARN funktioniert? Überprüfen Sie diesen Beitrag Spark on YARN
Im Allgemeinen nennen wir die Worker-Instanz als Slave, da dies ein Prozess zum Ausführen von Spark-Tasks / Jobs ist . Die empfohlene Zuordnung für einen Knoten (eine physische oder virtuelle Maschine) und einen Worker lautet:
Ja, ein Worker-Knoten kann mehrere Executoren (Prozesse) enthalten, wenn er über ausreichend CPU, Speicher und Speicher verfügt .
Überprüfen Sie den Worker-Knoten im angegebenen Bild.
Übrigens: Die Anzahl der Ausführenden in einem Arbeitsknoten zu einem bestimmten Zeitpunkt hängt vollständig von der Arbeitslast des Clusters und der Fähigkeit des Knotens ab , die Anzahl der Ausführenden auszuführen.
Wenn wir die Ausführung aus der Spark-Perspektive über einen Ressourcenmanager für ein Programm betrachten, welche
join
zweirdd
s und dann einereduce
Operation ausführenfilter
HIH
quelle
Ich weiß, dass dies eine alte Frage ist und Seans Antwort war ausgezeichnet. In meinem Artikel geht es um SPARK_WORKER_INSTANCES in MrQuestions Kommentar. Wenn Sie Mesos oder YARN als Cluster-Manager verwenden, können Sie mehrere Executoren mit einem Worker auf demselben Computer ausführen. Es ist also nicht erforderlich, mehrere Worker pro Computer auszuführen. Wenn Sie jedoch einen eigenständigen Cluster-Manager verwenden, ist derzeit nur ein Executor pro Worker-Prozess auf jedem physischen Computer zulässig. Wenn Sie also eine super große Maschine haben und mehrere Exectuors darauf ausführen möchten, müssen Sie mehr als einen Arbeitsprozess starten. Das ist , was SPARK_WORKER_INSTANCES im spark-env.sh ist. Der Standardwert ist 1. Wenn Sie diese Einstellung verwenden, stellen Sie sicher, dass Sie SPARK_WORKER_CORES festlegen explizit, um die Kerne pro Worker zu begrenzen, sonst versucht jeder Worker, alle Kerne zu verwenden.
Diese Einschränkung für eigenständige Cluster-Manager sollte bald verschwinden. Laut diesem SPARK-1706 wird dieses Problem behoben und in Spark 1.4 veröffentlicht.
quelle
Wie Lan sagte, ist die Verwendung mehrerer Worker-Instanzen nur im Standalone-Modus relevant. Es gibt zwei Gründe, warum Sie mehrere Instanzen haben möchten: (1) Garbage Pausen Collector kann den Durchsatz für große JVMs beeinträchtigen. (2) Heap-Größe von> 32 GB kann CompressedOoops nicht verwenden
Lesen Sie mehr darüber, wie Sie mehrere Worker-Instanzen einrichten .
quelle