2016-05-03 8 views
0

Ich bin eine Anwendung abgestimmt auf Spark 1.5.2. Ich lief 2 Mal genau das gleiche Skript, aber mit anderen driver.memory Parameter.SPARK: Erhöhen der Anzahl der DRIVER MEMORY kann die Leistung verringern?

  • Zum ersten Mal: ​​driver.memory = 15g/Ausführungszeit: 6,1h
  • zum zweiten Mal: ​​driver.memory = 2 g/Ausführungszeit: 5,7h

Das Ziel des Skripts macht nur Join auf einer selben Tabelle und iteriere es mit einer neueren Tabelle, bevor es in einer Hive-Tabelle gespeichert wird.

Ich denke, je mehr Speicher wir geben, desto besser ist es. Aber diese Idee ist nach den Tests etwas falsch ... Ist wirklich der Treiberspeicher dafür verantwortlich? Oder ist der Prozess +/- +/- zufällig?

+2

Erhöhung Speicher in Java stark beide Benchmarks und die Gesamtleistung beeinflussen können. Volle GCs auf dem Treiber werden alle Treiber-Cluster-Massage anhalten und verzögern möglicherweise Abruf von Ergebnissen. Es gibt mehr Details, aber ich weiß nicht, wie diese auf pySpark zutreffen –

Antwort

0

Es spielt keine Rolle, ob der Treiber auf einem eigenständigen Computer ausgeführt wird (auf dem kein Executor ausgeführt wird). Versuchen Sie, den Speicher des Treibers zu erhöhen, wenn Sie Collect/Take-Aktionen verwenden, andernfalls erhöhen Sie den Executor-Speicher für eine bessere Leistung.

Wenn Sie keinen Cache verwenden, versuchen Sie, spark.suffle.memoryFraction zu erhöhen.

Siehe Funken doc für weitere Informationen: https://spark.apache.org/docs/1.5.2/configuration.html

Verwandte Themen