Apache Spark: Unterschiede zwischen Client- und Cluster-Bereitstellungsmodus

TL; DR: Worin unterscheiden sich die Bereitstellungsmodi für Clients und Cluster in einem eigenständigen Spark-Cluster? Wie lege ich fest, in welchem Modus meine Anwendung ausgeführt werden soll?

ir haben einen Spark-Standalone-Cluster mit drei Computern, alle mit Spark 1.6.

Eine Master-Maschine, auf der auch unsere Anwendung mit @ ausgeführt wirspark-submit 2 identische Arbeitsmaschinen

Von demSpark Documentation, Ich lese

(...) Für eigenständige Cluster unterstützt Spark derzeit zwei Bereitstellungsmodi. Im Client-Modus wird der Treiber im selben Prozess wie der Client gestartet, der die Anwendung übermittelt. Im Cluster-Modus wird der Treiber jedoch von einem der Worker-Prozesse im Cluster gestartet, und der Client-Prozess wird beendet, sobald er seiner Verantwortung für das Einreichen der Anwendung nachkommt, ohne auf die Beendigung der Anwendung zu warten.

Ich verstehe die praktischen Unterschiede jedoch nicht wirklich, wenn ich sie lese, und ich verstehe nicht, welche Vor- und Nachteile die verschiedenen Bereitstellungsmodi haben.

Zusätzlich, wenn ich meine Anwendung mit start-submit starte, auch wenn ich die Eigenschaft @ gesetzt haspark.submit.deployModeei "Cluster" zeigt die Spark-Benutzeroberfläche für meinen Kontext den folgenden Eintrag:

So kann ich nicht beide Modi testen, um die praktischen Unterschiede zu erkennen. Davon abgesehen sind meine Fragen:

1) Was sind die praktischen Unterschiede zwischen Spark StandaloneKlien deploy mode und cluster Bereitstellungsmodus? Was sind die Vor- und Nachteile eines jeden?

2) Wie kann ich mit @ auswählen, auf welchem Programm meine Anwendung ausgeführt werden solspark-submit?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage