Direkt zum Hauptinhalt

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.

Zusätzliche Ressourcen

Zurück zum Glossar