Apache Spark ist eine quelloffene Datenverarbeitungs-Engine, die große Datenmengen auf mehreren Rechnern gleichzeitig verarbeitet (verteilte Verarbeitung) und die Daten dabei überwiegend im Arbeitsspeicher (RAM) hält statt auf der Festplatte. Spark deckt vier Aufgabenfelder ab: Batch-Verarbeitung (große Datenmengen am Stück), SQL-Abfragen, kontinuierliche Datenströme (Streaming) und Machine Learning. Programmiert wird Spark über Schnittstellen (APIs) in Scala, Java, Python (dort PySpark genannt), R und SQL. Kommerzielle Plattformen wie Databricks bauen auf Spark auf.
Was ist Apache Spark?
Apache Spark verteilt eine Rechenaufgabe (Job) auf mehrere Rechner, die zusammen ein Cluster bilden. Drei Rollen greifen dabei ineinander: Der Driver ist das steuernde Programm, das den Job entgegennimmt und plant, welche Schritte in welcher Reihenfolge laufen. Die Executoren sind die Arbeiter-Prozesse auf den einzelnen Rechnern, die die Rechenschritte tatsächlich ausführen. Der Cluster Manager ist die Vermittlungsstelle, die dem Job Rechner zuteilt (gängige Cluster Manager sind Standalone, YARN, Kubernetes oder eine kommerzielle Plattform wie Databricks). Der Driver zerlegt den Job in einen Ablaufplan (technisch: einen DAG, einen gerichteten azyklischen Graphen; also eine Kette von Schritten ohne Rückwärts-Schleifen), der Cluster Manager verteilt die einzelnen Aufgaben (Tasks) auf die Executoren, und jeder Executor arbeitet seine zugeteilten Datenausschnitte (Partitionen) parallel im Arbeitsspeicher ab. Weil die Zwischenergebnisse dort bleiben und nicht nach jedem Schritt auf die Festplatte geschrieben werden, laufen mehrstufige Jobs deutlich schneller als bei klassischen Batch-Systemen.
Spark ist 2009 an der UC Berkeley AMPLab entstanden und wurde 2013 Apache-Top-Level-Projekt. Der Ausgangspunkt war eine Limitation von Hadoop MapReduce: MapReduce materialisiert nach jedem Map- und Reduce-Schritt Zwischenergebnisse auf HDFS, was iterative Workloads (Machine Learning, Graph-Algorithmen, interaktive Analysen) langsam macht. Spark generalisiert das Ausführungsmodell zu einem allgemeinen DAG mit In-Memory-Caching und ist bei iterativen Workloads deshalb um den Faktor zehn bis hundert schneller als MapReduce.
Die Programmier-Oberfläche besteht aus mehreren aufeinander aufsetzenden APIs. Die Low-Level-API ist das Resilient Distributed Dataset (RDD), eine unveränderliche, partitionierte Datensammlung. Darüber liegen die relationalen DataFrame- und Dataset-APIs, die vom Catalyst-Optimizer geplant und über die Tungsten-Execution-Engine ausgeführt werden. Structured Streaming bildet Streaming-Verarbeitung als inkrementelle Query über eine unendliche Tabelle ab, MLlib deckt Machine-Learning-Algorithmen ab, GraphX Graph-Verarbeitung. Konnektoren binden HDFS, S3, ADLS, GCS, JDBC-Datenbanken, Kafka sowie die Tabellenformate Delta Lake, Iceberg und Hudi neben Parquet, Avro und ORC an.
Spark arbeitet mit Lazy Evaluation. Transformations wie filter oder groupBy bauen den DAG auf, ohne die Berechnung auszuführen; erst eine Action (count, write, collect) löst die Ausführung aus. Das erlaubt dem Optimizer, mehrere Schritte zusammenzufassen und Predicate-Pushdown, Partition-Pruning und Join-Reordering anzuwenden, bevor die Tasks auf die Executoren verteilt werden.
Abgrenzung zu Hadoop MapReduce, PySpark und Databricks Runtime
Apache Spark wird häufig mit verwandten Begriffen verwechselt, weil verteilte Verarbeitung, Programmier-API und kommerzielle Distribution in derselben Diskussion zusammenfallen.
| Begriff | Verhältnis zu Apache Spark |
|---|---|
| Hadoop MapReduce | Ältere Batch-Engine; materialisiert Zwischenergebnisse auf HDFS. Spark ersetzt MapReduce durch ein DAG-Modell mit In-Memory-Caching. |
| PySpark | Kein separates Produkt, sondern die Python-API von Apache Spark. Läuft auf derselben JVM-Engine; Python-UDFs gehen über einen zusätzlichen Python-Worker-Prozess. |
| Databricks Runtime | Kommerzielle Distribution, die Apache Spark enthält und um Photon, Delta Lake, Optimierungen und Systemintegrationen ergänzt. Spark bleibt der Kern. |
| Photon | Vektorisierte C++-Query-Engine innerhalb der Databricks Runtime, die bestimmte Spark-SQL- und DataFrame-Operatoren nativ ausführt. Spark bleibt API- und Planungsebene. |
| Apache Flink | Verteilte Streaming-first-Engine mit Event-für-Event-Verarbeitung und eigenem State-Management. Spark verarbeitet Streams als Micro-Batches über Structured Streaming. |
Apache Spark ist damit die zugrundeliegende Engine, auf der die anderen Begriffe entweder aufbauen (PySpark, Databricks Runtime, Photon) oder mit der sie in direkter Konkurrenz stehen (MapReduce, Flink).
Beispiel: Nächtlicher ETL-Job auf einer Delta-Tabelle
Ein typischer Einsatz ist ein nächtlicher ETL-Job, der 500 GB Rohdaten aus einem S3-Bucket liest, sie mit Stammdaten aus einer JDBC-Quelle joint, auf Tages-Kennzahlen aggregiert und das Ergebnis als Delta-Tabelle schreibt. Der Driver plant den Job als DAG aus Scan, Filter, Broadcast-Join und Group-By-Aggregation. Der Cluster Manager startet mehrere Executoren, die die Rohdaten partitionsweise einlesen; jeder Executor filtert und aggregiert seine Partitionen parallel im Speicher. Erst der finale Write auf die Delta-Tabelle löst die Ausführung aus, danach beendet der Driver den Job und die Executoren geben die Cluster-Ressourcen frei.
Ein zweiter typischer Einsatz ist Structured Streaming: Ein kontinuierlicher Job konsumiert einen Kafka-Topic, dedupliziert Events über ein Watermark-Fenster und schreibt aggregierte Kennzahlen inkrementell in eine Delta-Tabelle, die downstream als Feature-Store für Modell-Inferenz oder als Basis eines Near-Real-Time-Dashboards dient. Spark verarbeitet die Events als Micro-Batches im Sekunden- bis Minutenbereich; das Checkpointing sichert den Streaming-State ab, sodass der Job nach einem Neustart genau dort weiterläuft, wo er unterbrochen wurde.
Apache Spark im eigenen Unternehmen umsetzen?
Wir zeigen, wie sich das in deiner Systemlandschaft konkret abbilden lässt.
Databricks-Umsetzung für Pipelines, CDC und Streaming auf Spark-Basis
Databricks Data Intelligence PlatformPosition von Spark zwischen Unity Catalog, Storage und Compute
Photon (Databricks Query Engine)vektorisierte Ausführungsschicht innerhalb der Databricks Runtime
Databricks Unit (DBU)Verrechnungseinheit für Spark-Compute auf Databricks
Data Streamingkontinuierliche Verarbeitung als Gegenstück zu Batch-Jobs