Apache Spark

Problem

Ein Einzelhändler benötigt Verkaufssummen aus Tausenden von großen Dateien. Die Verarbeitung von allem auf einem Computer dauert zu lange, und ein Maschinenausfall kann die Berechnung unterbrechen. Die Arbeit muss maschinenübergreifend aufgeteilt werden, wobei Teilergebnisse kombiniert und fehlgeschlagene Aufgaben wiederholt werden.

Lösung — Apache Spark

Apache Spark ist eine Open-Source-Engine für verteilte Datenverarbeitung. Es teilt Daten in Partitionen auf, die Arbeiter parallel verarbeiten. Für Verkaufssummen berechnet jeder Arbeiter Teilsummen, dann kombiniert Spark sie nach Produkten. Ein Driver genannter Koordinator plant die Arbeit; Executor-Prozesse führen die Aufgaben aus. Beim Gruppieren oder Verknüpfen von Daten müssen Worker Datensätze untereinander austauschen. Dieser Austausch heißt Shuffle. Spark kann Zwischenergebnisse im Speicher wiederverwenden und nach einem Worker-Ausfall verlorene Partitionen neu berechnen. Teams verwenden Spark für Batch-Transformationen, Stream-Verarbeitung und maschinelles Lernen. Azure Synapse und Azure Databricks bieten verwaltete Spark-Umgebungen. Das Starten der Rechenressourcen und Verschieben von Daten verursacht zusätzlichen Aufwand; eine kleine Datei lässt sich häufig einfacher mit einer gewöhnlichen SQL-Abfrage verarbeiten.
Kerngedanke: Spark koordiniert die parallele Datenverarbeitung über Maschinen hinweg, um große Workloads zu bewältigen.