Spark-submit / Funke-shell > Unterschied zwischen Garn-client-und-Garn-cluster-Modus
Mir läuft Spark mit GARN.
Aus dem link: http://spark.apache.org/docs/latest/running-on-yarn.html
Fand ich die Erklärung von unterschiedlichen Garn-Modi, d.h. die --master option, mit der Funke laufen kann:
"Es gibt zwei Modi bereitstellen, die verwendet werden können, um zu starten Spark-Anwendungen auf GARN. In Garn-cluster-Modus, der Funke Treiber läuft in einer Anwendung master-Prozess, der verwaltet wird von GARN auf den cluster, und der Kunde kann gehen Weg nach dem Start der Anwendung. In Garn-client-Modus, der Treiber läuft im client-Prozess und die Anwendung der master ist nur für die Anforderung von Ressourcen aus GARN"
Hiermit, ich kann nur verstehen, der Unterschied ist, dass wo der Treiber läuft, aber ich kann nicht verstehen, welche läuft schneller. Morevover:
- Bei laufender Funke zu übermitteln, die --master kann entweder client oder cluster
- Entsprechend Funke-shell-master-option können Sie Garn-client aber es keine Unterstützung für cluster mode
So dass ich nicht weiß, wie der Wahl, D. H. bei der Verwendung von spark-Verwaltungsshell verwenden spark-submit, vor allem, wenn die Verwendung von client - Modus, wenn mit cluster - Modus
- Blick auf dieses Verwandte Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funke-shell sollte verwendet werden, für interaktive Abfragen, die ausgeführt werden muss, in Garn-client-Modus, so dass die Maschine läuft bist du auf fungiert als Fahrer.
Für die spark-senden Sie Druckaufträge an den cluster dann die Aufgabe läuft im cluster. Normalerweise führen Sie in den cluster-Modus, so dass GARN zuordnen kann der Fahrer, um einen geeigneten Knoten auf die cluster mit den verfügbaren Ressourcen.
Einige Befehle (wie .collect()) senden der Daten an den Treiber-Knoten, die dazu führen können erhebliche performance-Unterschiede zwischen Sie, ob Ihre Treiber-Knoten in dem cluster, oder auf eine Maschine außerhalb des Clusters (z.B. ein laptop-Benutzer).
Für das lernen Zweck der client-Modus ist gut genug. In einer Produktionsumgebung sollten Sie IMMER verwenden Sie den cluster-Modus.
Ich erkläre Sie mit Hilfe eines Beispiels. Stellen Sie sich ein Szenario, wo Sie wollen, starten Sie mehrere Anwendungen.Lassen Sie uns sagen, Sie haben eine 5-Knoten-cluster mit den Knoten A,B,C,D,E.
Den Arbeitsaufwand, verteilt auf alle 5 worker-Knoten und 1-Knoten werden zusätzlich verwendet, um Druckaufträge als auch (sagen wir " A " verwendet). Jetzt jedes mal, wenn Sie starten Sie die Anwendung mit der client-Modus, der Fahrer Prozesses laufen immer auf 'Ein'.
Es könnte funktionieren gut für ein paar Arbeitsplätze, aber die Arbeitsplätze weiter steigen, " A " wird kurz der Ressourcen wie CPU und Speicher.
Stellen Sie sich die Auswirkungen auf eine sehr große cluster, die ausgeführt wird, mehrere solcher jobs.
Aber, wenn Sie die Option cluster-Modus, der Treiber läuft auf 'A' jedes mal, sondern verteilt auf allen 5 Knoten. Die Ressourcen in diesem Fall werden gleichmäßiger ausgelastet.
Hoffe, dies hilft Ihnen zu entscheiden, welcher Modus zu wählen.
Client - Modus-Verwenden Sie für interaktive Abfragen, wo Sie wollen, um die direkte Ausgabe (eine lokale Maschine oder edge-Knoten). Dies wird führen Sie die Treiber auf Ihrem lokalen Rechner /edge-Knoten, von wo aus man die Anwendung gestartet hat.
Cluster - Modus-in Diesem Modus wird Ihnen helfen, starten Sie die Treiber innerhalb der cluster, unabhängig von der Maschine, die Sie verwendet haben, um den Antrag. GARN werden, fügen Sie eine Anwendung master, wo wird dieser Treiber angelegt werden und werden damit zu fehlertolerant ist.