2017-12-02 5 views
2

Ich habe einen Knoten mit 5 Arbeiter Knoten mit jeweils 6 GB Speicher (Spark Executor Speicher ist auf 4608 GB eingestellt).Wie viel Speicher ist für zwischengespeicherte RDDs reserviert?

Ich habe nicht mehr viel Speicher, mit Spark erzählte mir, dass einer meiner Executors versuchte, mehr als 5.0 GB Speicher zu verwenden. Wenn jeder Executor 5 GB Speicher bekommt, dann sollte ich insgesamt 25 GB Speicher zwischen meinem gesamten Cluster haben.

ExecutorLostFailure (executor 4 exited caused by one of the running tasks) 
Reason: Container killed by YARN for exceeding memory limits. 5.0 GB of 5.0 
GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead. 

Zu Beginn meiner Funken Anwendung, wenn ich bei einem meiner RDDs in der Registerkarte Speicher aussehen (es ist die einzige rdd im Cache an dieser Stelle), ich sehe:

RDD Name Storage Level     Cached Partitions Fraction Cached Size in Memory Size on Disk 
myRDD  Memory Serialized 1x Replicated 20     100%  3.2 GB 0.0 B 

Host On Heap Memory Usage   Off Heap Memory Usage Disk Usage 
Node 1 643.5 MB (1931.3 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B 
Master 0.0 B (366.3 MB Remaining)  0.0 B (0.0 B Remaining) 0.0 B 
Node 2 654.8 MB (1920.0 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B 
Node 3 644.2 MB (1930.6 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B 
Node 4 656.2 MB (1918.6 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B 
Node 5 652.4 MB (1922.4 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B 

Dies scheint zu zeigen, dass jeder Knoten nur etwa 2,5 GB verfügbaren Arbeitsspeicher hat. Die Speicherregisterkarte wird auch nie annähernd 25 GB von zwischengespeicherten RDDs anzeigen, bevor meine Spark-Anwendung einen Speichermangelfehler erhält.

Wie kann ich herausfinden, wie viel Speicher für zwischengespeicherte RDDs reserviert ist?

Antwort

2

Beim Übergeben eines Jobs können Sie den Parameter spark.memory.storageFraction angeben. Der Standardwert hierfür ist 0,5.

In dem Fall, in dem Sie 5G-Speicher für Executoren reservieren, wird 2.5G für das Caching reserviert und die restlichen 2.5G werden für die Ausführung verwendet.

Von Memory Management:

spark.memory.storageFraction

Speichermenge Speicher immun gegen Räumungs, ausgedrückt als ein Bruchteil der Größe der Seite von s park.memory.fraction gesetzt Region. Je höher dies ist, desto weniger Arbeitsspeicher kann für die Ausführung verfügbar sein und Aufgaben können häufiger auf die Festplatte ausgelaufen sein. Es wird empfohlen, dies auf dem Standardwert zu belassen. Weitere Einzelheiten finden Sie unter this description.

Verwandte Themen