2017-02-02 4 views
1

Wir haben einige Code geschrieben, um Datasets über GraphX ​​in Scala mit Spark 1.6.1 und Scala 2.10 verbinden und verknüpfen.Spark GraphX ​​Spark-Shell vs Spark-Submit Leistungsunterschiede

Wenn wir diesen Code in Spark-Shell ausführen, wird es in 30 Minuten mit 10 Executoren, 10g Speicher & 5 CPU pro Executor ausführen.

Wenn wir dies in einem fetten Krug mit Spark-Submit ausführen, dann fällt der Prozess mit nicht genügend Speicherfehler und dauert eineinhalb Stunden, um zu diesem Punkt zu gelangen.

Hat jemand irgendwelche Ideen, was könnte das verursachen?

Weiß jemand, wie SparkContext und SQLContext in der Shell eingerichtet sind und ob wir etwas beim Einrichten unserer eigenen Kontexte verpasst haben, was dazu führen könnte, dass das Problem mit der Spark-Submit so schlecht abläuft?

Antwort

0

Ich dachte, das eine Weile zurück und gerade wieder in meine Frage gestoßen. Der Gedanke würde also mit der Art und Weise, wie ich es repariert habe, aktualisiert werden. Das Problem war nicht ein Unterschied zwischen Spark-Submit und Spark-Shell, sondern der Unterschied in der Code-Struktur, die wir ausgeführt haben.

In der Shell-i wurde der Code Entbündelung und Zeile für Zeile ausgeführt wird, führte dies in den generierten Code von Spark schnell und effizient zu sein.

Mit Spark Submit hatten wir den Code verpackt und in Klassen mit Inheritcence gerollt, um den Code einfacher zu teilen und wiederzuverwenden, aber dies führte dazu, dass der erzeugte Code unordentlich und ineffizient war. Als wir den Großteil der Vererbung entfernt und einfach mehr Funktionscode in die Basis geschrieben haben, ist die Performance wieder schnell und effizient geworden.

Also die Lektion hier ist, um sicherzustellen, dass Sie Ihre Anwendung nicht zu viel OOP und wenig Vererbung ist OK, aber Sie sollten sich bemühen, Ihren Code so einfach und funktional ass möglich, um es einfach für Spark schnell effizient zu erstellen Code, der auf dem Cluster ausgeführt werden soll.

0

Es sollte keinen Unterschied geben.

Überprüfen Sie spark-submit Einstellungen - wahrscheinlich einige von ihnen sind falsch und spark-submit hat niedrigere Anzahl von Executoren oder Speicher.

öffnen Spark-Web-UI, überprüfen, ob die Daten nicht schief ist und wenn alles richtig konfiguriert ist

+0

Wir haben die Einstellungen überprüft sie identisch sind und selbst wenn wir die Funken einreichen mehr Ressourcen als die Schale noch in Probleme läuft geben. Wenn die Daten verzerrt sind, sollte dies auch Auswirkungen auf die Shell haben und auf die gleiche Weise erfolgen. –

+0

@AndyLong Können Sie Parameterwerte in Spark Web UI überprüfen? –

+0

Vielleicht sind einige Einstellungen überschrieben, deshalb möchte ich Informationen von Web-UI überprüfen –

Verwandte Themen