Spark Heap Speicher Config und Wolfram

8

Ich dachte, dass Funke mit der Integration des Projekts "tungeste" automatisch Off-Heap-Speicher verwenden würde.

Was für sind spark.memory.offheap.size und spark.memory.offheap.enabled? Muss ich hier manuell den Umfang des Off-Heap-Speichers für Tungsten angeben?

    
Georg Heiler 10.04.2017, 18:55
quelle

1 Antwort

9

Spark / Tungsten verwendet Encoder / Decoder, um JVM-Objekte als hoch spezialisierte Objekte von Spark SQL-Typen darzustellen, die dann serialisiert und hochperformant betrieben werden können. Die interne Formatdarstellung ist sehr effizient und benutzerfreundlich für die GC-Speichernutzung.

Selbst bei Verwendung des standardmäßigen On-Heap-Modus verringert Tungsten den großen Aufwand für das JVM-Speicherlayout und die GC-Betriebszeit. Tungsten in diesem Modus tut Objekte auf Heap für seine internen Zwecke zu und die Zuordnungsspeicher-Chunks sind zwar riesig, aber es passiert viel weniger häufig und überlebt GC-Generierungsübergänge reibungslos. Dadurch entfällt die Notwendigkeit, diese interne Struktur außerhalb des Heap zu verschieben.

In unseren Experimenten mit diesem Modus haben wir keine wesentlichen Verbesserungen der Laufzeit gesehen. Was Sie jedoch mit dem Off-Heap-Modus erreichen, ist, dass Sie die Speicherzuweisung außerhalb Ihres JVM-Prozesses sorgfältig planen müssen. Dies kann bei Containermanagern wie YARN, Mesos usw. zu Schwierigkeiten führen, wenn Sie neben der JVM-Prozesskonfiguration zusätzliche Speicherabschnitte zulassen und planen müssen.

Auch im Off-Heap-Modus verwendet Tungsten sun.misc.Unsafe, was in Ihren Einsatzszenarien nicht erwünscht oder sogar möglich ist (z. B. mit einer restriktiven Java-Sicherheitsmanager-Konfiguration).

Ich teile auch eine mit der Zeit markierte Videokonferenz Rede von Josh Rosen, wenn ihm die ähnliche Frage gestellt wird.

    
kasur 26.04.2017, 11:49
quelle