Tungsten
DATABRICKS KOSTENLOS TESTEN
Was ist das Tungsten-Projekt?
Tungsten ist der Codename für ein Rahmenprojekt, mit dem Änderungen an der Ausführungs-Engine von Apache Spark vorgenommen werden sollen. Der Schwerpunkt liegt dabei auf einer wesentlich effizienteren Nutzung von Speicher und Prozessor für Spark-Anwendungen, um die Leistungsfähigkeit moderner Hardware möglichst weitgehend auszureizen.
Das Tungsten-Projekt umfasst die folgenden Initiativen:
- Memory Management und Binary Processing: Nutzung der Anwendungssemantik mit dem Ziel, Speicher explizit zu verwalten und den Mehraufwand für das JVM-Objektmodell und die Garbage Collection zu minimieren
- Cache-Aware Computation: Algorithmen und Datenstrukturen zur Ausschöpfung der Speicherhierarchie
- Code Generation: Optimale Nutzung moderner Compiler und CPUs durch Codegenerierung
- No Virtual Function Dispatches: Reduziert die Anzahl der CPU-Aufrufe, was sich bei milliardenfachem Dispatching gravierend auf die Leistung auswirken kann
- Intermediate Data in Memory vs CPU Registers: Tungsten-Phase 2: Ablegen von Zwischendaten in CPU-Registern. Das Abrufen von Daten aus den CPU-Registern statt aus dem Speicher bringt eine Verringerung der Zyklusanzahl um mehrere Größenordnungen mit sich.
- Loop Unrolling and SIMD: Optimierung der Ausführungs-Engine von Apache Spark, um die Vorteile moderner Compiler und CPUs zu nutzen, die einfache for-Schleifen (im Gegensatz zu komplexen Funktionsaufrufgraphen) effizient kompilieren und ausführen können
Das Hauptaugenmerk auf der CPU-Effizienz liegt in der Tatsache begründet, dass Engpässe bei Spark-Workloads zunehmend durch CPU- und Speichernutzung statt durch E/A- und Netzwerkkommunikation entstehen. Dieser Trend zeigt sich in den jüngsten Untersuchungen zur Leistung von Big-Data-Workloads.