web-dev-qa-db-de.com

In welcher Beziehung stehen Arbeiter, Arbeiterinstanzen und Vollstrecker?

Im Spark Standalone-Modus gibt es Master- und Worker-Knoten.

Hier sind einige Fragen:

  1. Bedeutet 2 Worker-Instanz einen Worker-Knoten mit 2 Worker-Prozessen?
  2. Besitzt jede Worker-Instanz einen Executor für eine bestimmte Anwendung (die den Speicher, die Task verwaltet) oder ein Worker-Knoten einen Executor?
  3. Gibt es ein Ablaufdiagramm, in dem erläutert wird, wie die Laufzeit von spark wie Word count?
62
edwardsbean

Ich schlage vor, zuerst die Spark-Cluster-Dokumentation zu lesen, aber erst recht diese Cloudera-Blog-Post , in der diese Modi erklärt werden.

Ihre erste Frage hängt davon ab, was Sie unter Instanzen verstehen. Ein Knoten ist eine Maschine, und es gibt keinen guten Grund, mehr als einen Worker pro Maschine auszuführen. Zwei Worker-Knoten bedeuten also normalerweise zwei Maschinen, jede ein Spark worker.

Arbeiter halten viele Testamentsvollstrecker für viele Anwendungen. Eine Anwendung hat Executoren für viele Worker.

Ihre dritte Frage ist nicht klar.

48
Sean Owen

Um auf andere gute Antworten einzugehen, möchte ich mit wenigen Bildern beschreiben.

Im Standalone-Modus Spark) gibt es Master- und Worker-Knoten.

Wenn wir für den Standalone-Modus sowohl den Meister als auch den Arbeiter an einem Ort vertreten.

Spark Standalone mode

Wenn Sie neugierig sind, wie Spark mit YARN funktioniert? Schauen Sie sich diesen Beitrag an Spark on YARN

1. Bedeutet 2 Worker-Instanz einen Worker-Knoten mit 2 Worker-Prozessen?

Im Allgemeinen bezeichnen wir die Worker-Instanz als Slave, da dies ein auszuführender Prozess ist spark tasks/jobs . Vorgeschlagene Zuordnung für Knoten (eine physische oder virtuelle Maschine) und Arbeiter ist,

1 Node = 1 Worker process

2. Verfügt jede Worker-Instanz über einen Executor für eine bestimmte Anwendung (der Speicher, Task verwaltet) oder einen Worker-Knoten über einen Executor?

Ja, ein Worker-Knoten kann mehrere Executoren enthalten (Prozesse) wenn er über genügend CPU, Speicher und Speicher verfügt.

Überprüfen Sie den Worker-Knoten im angegebenen Bild. A Worker node in cluster

Übrigens, die Anzahl der Ausführenden in einem Arbeitsknoten zu einem bestimmten Zeitpunkt hängt vollständig von der Arbeitslast auf dem Knoten ab Cluster und Fähigkeit des Knotens , wie viele Executor auszuführen.

3. Gibt es ein Flussdiagramm, in dem erklärt wird, wie spark runtime?

Betrachten wir die Ausführung von Spark prospektiv über einen Ressourcenmanager für ein Programm, das join zwei rdds und dann eine reduce -Operation ausführt filter

Spark runtime for a sample code

HIH

32
mrsrinivas

Ich weiß, dass dies eine alte Frage ist und Seans Antwort war ausgezeichnet. In meinem Artikel geht es um die SPARK_WORKER_INSTANCES in MrQuestions Kommentar. Wenn Sie Mesos oder YARN als Cluster-Manager verwenden, können Sie mehrere Executor auf demselben Computer mit einem Worker ausführen, sodass nicht unbedingt mehrere Worker pro Computer ausgeführt werden müssen. 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 sehr große Maschine haben und mehrere Exectuors darauf ausführen möchten, müssen Sie mehr als einen Worker-Prozess starten. Dafür steht SPARK_WORKER_INSTANCES in der spark-env.sh . Der Standardwert ist 1. Wenn Sie diese Einstellung verwenden, stellen Sie sicher, dass Sie SPARK_WORKER_CORES explizit festlegen, um die Kerne pro Worker zu begrenzen. Andernfalls versucht jeder Worker, dies zu tun alle Kerne zu verwenden.

Diese Einschränkung für eigenständige Cluster-Manager sollte bald aufgehoben werden. Entsprechend SPARK-1706 wird dieses Problem behoben und in Spark 1.4 veröffentlicht.

30
Lan

Wie Lan bereits 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 über wie Sie mehrere Worker-Instanzen einrichten .

7
Uli Bethke