Direkt zum Hauptinhalt

Was ist Wolfram?

Wie das Tungsten-Projekt die Ausführungs-Engine von Spark durch intelligentere Speichernutzung, Cache-basierte Algorithmen und Codegenerierung optimiert, um die Leistung näher an die von Bare-Metal-Systemen heranzuführen.

von Databricks-Mitarbeiter

Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.

  • Erfahren Sie, wie Tungsten die Speicher- und CPU-Effizienz der Spark-Ausführungs-Engine optimiert, um die Grenzen moderner Hardware für Spark-Anwendungen auszuloten.
  • Lernen Sie Tungstens wichtigste Initiativen kennen, darunter explizites Speichermanagement, Cache-basierte Berechnungen, Codegenerierung und die Reduzierung virtueller Funktionsaufrufe.
  • Verstehen Sie, wie Techniken wie das Speichern von Zwischenergebnissen in CPU-Registern, Loop Unrolling und SIMD-Unterstützung die Leistung von Spark SQL- und DataFrame-Workloads deutlich steigern.

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.

Bericht

Das Playbook für agentenbasierte KI für Unternehmen

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

Erhalten Sie die neuesten Beiträge in Ihrem Posteingang

Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.