Apache Spark: Unterschiede zwischen client und cluster bereitstellen Modi
TL;DR: In einem Spark-Standalone-cluster, was sind die Unterschiede zwischen client und cluster bereitstellen Modi? Wie kann ich einstellen, in welchem Modus meine Anwendung ausgeführt wird, auf?
Haben wir einen Funken Standalone-cluster mit drei Computern, alle mit Spark 1.6.1:
- Eine master-Maschine, die auch ist, wo unsere Anwendung ausführen, verwenden
spark-submit
- 2 identische Arbeiter Maschinen
Aus der Spark-Dokumentation, ich lese:
(...) Für die standalone-Cluster, Funke unterstützt aktuell zwei Modi bereitstellen. Im client-Modus, der Treiber gestartet wird, in dem gleichen Prozess wie der client, sendet die Anwendung. Im cluster-Modus, allerdings ist der Fahrer startete von einem der Worker-Prozesse innerhalb des Clusters, und der client-Prozess beendet sich, sobald es erfüllt seine Verantwortung der Einreichung des Antrags, ohne zu warten, für die Anwendung fertig zu stellen.
Jedoch ich don ' T wirklich verstehen die praktischen Unterschiede hier Lesen, und ich verstehe nicht, was sind die vor-und Nachteile der verschiedenen Modi bereitstellen.
Außerdem, wenn ich meine Anwendung mit den start-reichen, auch wenn ich die Eigenschaft spark.submit.deployMode
zu "cluster", die Funke-UI für meinen Kontext zeigt den folgenden Eintrag:
So, ich bin nicht in der Lage zu testen, in beiden Modi finden Sie in der praktischen Unterschiede. Dass gesagt wird, meine Fragen sind:
1) Was sind die praktischen Unterschiede zwischen Spark-Standalone client bereitstellen-Modus und cluster bereitstellen-Modus? Was sind die pro 's und con' s der mit jedem?
2) Wie kann ich auswählen, welches meine Anwendung wird ausgeführt, mit spark-submit
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie uns versuchen, die Unterschiede zwischen client-und cluster-Modus.
Client:
Cluster:
--supervise
Flagge und zurückgesetzt werden, falls es stirbt.Welches ist besser? Nicht sicher, das ist eigentlich für Sie, zu Experimentieren und entscheiden. Dies ist keine bessere Entscheidung hier erhalten Sie Dinge, die von den ersteren und letzteren, es ist bis zu Ihnen, um zu sehen, welcher funktioniert besser für Ihren Anwendungsfall.
Den Weg zu wählen, welcher Modus ausgeführt, ist die Verwendung des
--deploy-mode
Flagge. Aus der Spark-Konfiguration Seite:SparkContext
.SparkContext
ist, muss er den code selbst zu präsentieren, wie Sie sonst den job anzufangen?Ich bin auch mit dem gleichen Szenario, hier master-Knoten verwenden Sie ein standalone-ec2-cluster. In diesem setup-client-Modus geeignet ist. In diesem Treiber gestartet wird direkt in der Funke-submit-Prozess fungiert als client zu cluster. Input & output der Applikation wird an der Konsole.Somit ist dieser Modus eignet sich besonders für Anwendungen, bei denen REPL.
Anderes, wenn Ihr Antrag von einem Computer, weit entfernt von dem Arbeiter Maschinen und dann ist es durchaus üblich, in den cluster-Modus zu minimieren, die Netzwerk-Latenz b/w-Treiber & executor.
Angenommen, Sie führen ein Funke reichen in EMR-by-doing SSH auf den master-Knoten.
Wenn Sie die option --deploy-Modus-cluster, dann werden folgende Dinge passieren.
Aber im Falle von-deploy-client-Modus:
Diese sind die grundlegenden Dinge, die ich bemerkt habe, bis jetzt.