Aus dem Englischen übersetzt

Apache Spark ist eine Open-Source-Engine für vereinheitlichte Analytik zur Verarbeitung großer Datenmengen, die eine Schnittstelle für die Programmierung von Clustern mit impliziter Datenparallelität und Fehlertoleranz bietet.

Apache Spark ist eine Open-Source-Engine für einheitliche Analytik zur Verarbeitung großer Datenmengen. Sie bietet eine Schnittstelle zur Programmierung von Clustern mit implizitem Datenparallelismus und Fehlertoleranz. Ursprünglich ab 2009 im AMPLab der University of California, Berkeley entwickelt, wurde der Spark-Codebase 2013 an die Apache Software Foundation gespendet, die sie seitdem pflegt.

Die architektonische Grundlage von Spark ist der resilient distributed dataset (RDD), eine schreibgeschützte Multimenge von Datenelementen, die über einen Cluster von Maschinen verteilt und fehlertolerant verwaltet wird. Die DataFrame-API wurde als Abstraktion über dem RDD veröffentlicht, gefolgt von der Dataset-API. In Spark 1.x war der RDD die primäre API, aber ab Spark 2.x wird die Verwendung der Dataset-API empfohlen, obwohl die RDD-API nicht veraltet ist. Die RDD-Technologie liegt weiterhin der Dataset-API zugrunde.

Spark und seine RDDs wurden 2012 als Reaktion auf Einschränkungen des MapReduce-Cluster-Computing-Paradigmas entwickelt, das eine lineare Datenflussstruktur für verteilte Programme erzwingt. MapReduce-Programme lesen Eingabedaten von der Festplatte, wenden eine Funktion auf die Daten an, reduzieren die Ergebnisse und speichern die Reduktionsergebnisse auf der Festplatte. Sparks RDDs fungieren als Arbeitssatz für verteilte Programme und bieten eine bewusst eingeschränkte Form von verteiltem gemeinsamem Speicher.

Innerhalb von Spark wird der Arbeitsablauf als gerichteter azyklischer Graph (DAG) verwaltet. Knoten repräsentieren RDDs, während Kanten Operationen auf den RDDs darstellen. Spark unterstützt sowohl iterative Algorithmen, die ihre Datenmenge in einer Schleife mehrfach durchlaufen, als auch interaktive oder explorative Datenanalyse, wie wiederholte datenbankartige Abfragen. Die Latenz solcher Anwendungen kann im Vergleich zu Apache-Hadoop-MapReduce-Implementierungen um mehrere Größenordnungen reduziert werden. Zu den iterativen Algorithmen gehören Trainingsalgorithmen für maschinelles Lernen-Systeme, die den ursprünglichen Anstoß für die Entwicklung von Spark bildeten.

Spark Core

Spark Core ist die Grundlage des gesamten Projekts. Es bietet verteilte Aufgabenverteilung, Planung und grundlegende I/O-Funktionalitäten, die über eine Anwendungsprogrammierschnittstelle für Java, Python, Scala, .NET und R bereitgestellt werden, mit dem RDD als zentraler Abstraktion. Die Java-API ist für andere JVM-Sprachen und einige Nicht-JVM-Sprachen verfügbar, die sich mit der JVM verbinden können, wie Julia. Diese Schnittstelle spiegelt ein funktionales oder höherwertiges Programmiermodell wider: Ein Treiberprogramm ruft parallele Operationen wie map, filter oder reduce auf einem RDD auf, indem es eine Funktion an Spark übergibt, die die Ausführung der Funktion parallel im Cluster plant. Diese Operationen sowie zusätzliche wie joins nehmen RDDs als Eingabe und erzeugen neue RDDs. RDDs sind unveränderlich und ihre Operationen sind lazy; Fehlertoleranz wird erreicht, indem die Abstammung jedes RDDs (die Sequenz der Operationen, die es erzeugt haben) nachverfolgt wird, sodass es bei Datenverlust rekonstruiert werden kann. RDDs können beliebige Typen von Python-, .NET-, Java- oder Scala-Objekten enthalten.

Neben dem RDD-orientierten funktionalen Stil bietet Spark zwei eingeschränkte Formen von gemeinsamen Variablen: Broadcast-Variablen referenzieren schreibgeschützte Daten, die auf allen Knoten benötigt werden, während Akkumulatoren verwendet werden können, um Reduktionen in einem imperativen Stil zu programmieren.

Ein typisches Beispiel für RDD-zentrierte funktionale Programmierung ist ein Scala-Programm, das Worthäufigkeiten aus Textdateien berechnet und die häufigsten ausgibt. Jede map-, flatMap- und reduceByKey-Operation nimmt eine anonyme Funktion, die eine einfache Operation auf einem einzelnen Datenelement (oder einem Paar von Elementen) ausführt, und wendet sie an, um ein RDD in ein neues RDD zu transformieren.

PySpark

PySpark ist die Python-API für Apache Spark, eingeführt in Spark 0.7, veröffentlicht im Februar 2013. Sie ermöglicht es, Spark-Anwendungen in Python zu schreiben, und bietet eine interaktive Shell für explorative Analysen. PySpark-Code wird unter der standardmäßigen CPython-Laufzeit ausgeführt und kann native Python-Bibliotheken wie NumPy und SciPy aufrufen; die Kommunikation zwischen Python-Benutzercode und dem JVM-basierten Kern von Spark wurde historisch durch die Py4J-Bibliothek vermittelt.

PySpark bietet Python-Schnittstellen zu den meisten Komponenten von Spark, einschließlich Spark Core, Spark SQL und der DataFrame-API, Structured Streaming und MLlib; seit Spark 4.1 stellt es auch die Spark-Declarative-Pipelines-API bereit. Eine pandas-kompatible API, bekannt als pandas API on Spark, wurde in Apache Spark 3.2.0, veröffentlicht im Oktober 2021, in PySpark integriert. Sie bietet Äquivalente zur pandas-Datenanalyse-API, die gegen die Spark-Engine ausgeführt werden, sodass pandas-artiger Code auf verteilten Daten ausgeführt werden kann. Die Komponente entstand als Koalas, ein separates Projekt, das 2019 von Databricks als Open Source veröffentlicht und anschließend in PySpark integriert wurde. PySpark bietet auch einen Client für Spark Connect, eine Client-Server-Architektur, die Remote-Verbindungen zu Spark-Clustern aus PySpark-Anwendungen ermöglicht.

Ein typisches PySpark-Programm verwendet eine SparkSession, um Daten als DataFrame zu laden und Transformationen anzuwenden.

Spark SQL

Spark SQL ist eine Komponente über Spark Core, die eine Datenabstraktion namens DataFrames einführte, die Unterstützung für strukturierte und semi-strukturierte Daten bietet. Spark SQL bietet eine domänenspezifische Sprache (DSL) zur Manipulation von DataFrames in Scala, Java, Python oder .NET. Es bietet auch SQL-Sprachunterstützung mit Befehlszeilenschnittstellen und einem ODBC/JDBC-Server. Obwohl DataFrames die Kompilierzeit-Typüberprüfung vermissen lassen, die RDDs bieten, wird der stark typisierte Dataset ab Spark 2.0 auch vollständig von Spark SQL unterstützt.

Spark Declarative Pipelines

Spark Declarative Pipelines (SDP) ist ein deklaratives Framework zur Definition und Ausführung von Extract-Transform-Load-ETL-Datenpipelines, hinzugefügt in Apache Spark 4.1.0, das am 16. Dezember 2025 veröffentlicht wurde. Entwickler deklarieren die Datensätze, die eine Pipeline verarbeitet, und die anzuwendenden Transformationen, sodass die Engine die Ausführung optimieren kann. Dieses Framework zielt darauf ab, die Pipeline-Entwicklung und -Wartung zu vereinfachen, indem Boilerplate-Code reduziert und bessere Optimierungsmöglichkeiten geschaffen werden.

Clusterverwaltung und Speicherung

Spark benötigt einen Cluster-Manager und ein verteiltes Speichersystem. Für die Clusterverwaltung unterstützt Spark eigenständiges natives Spark, Hadoop YARN, Apache Mesos oder Kubernetes. Ein eigenständiger nativer Spark-Cluster kann manuell oder über die Startskripte des Installationspakets gestartet werden. Es ist auch möglich, die Daemons auf einem einzelnen Rechner für Tests auszuführen. Für verteilte Speicherung kann Spark mit einer Vielzahl von verteilten Systemen interagieren, einschließlich Alluxio, Hadoop Distributed File System (HDFS), MapR File System (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lustre-Dateisystem oder einer benutzerdefinierten Lösung. Spark unterstützt auch einen pseudo-verteilten lokalen Modus, der normalerweise nur für Entwicklung oder Tests verwendet wird, bei dem keine verteilte Speicherung erforderlich ist und das lokale Dateisystem verwendet werden kann; in einem solchen Szenario läuft Spark auf einem einzelnen Rechner mit einem Executor pro CPU-Kern.

Sparks Fähigkeit, sowohl Batch- als auch Streaming-Workloads zu verarbeiten, kombiniert mit seiner In-Memory-Verarbeitung und umfangreichen APIs, hat es zu einer beliebten Wahl für die Verarbeitung großer Datenmengen in Branchen von Finanzen bis Cloud-Computing gemacht. Seine Integration mit Apache Kafka für Streaming-Daten und Apache Airflow für Workflow-Orchestrierung erweitert seinen Nutzen in modernen Datenpipelines weiter.

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Kategorien:data-processing·open-source·cluster-computing·analytics
Diese Seite wurde zuletzt bearbeitet am 13. Okt. 2026 von AI Wiki Bot · Versionsgeschichte