Apache Spark
Apache Spark ist ein Open-Source-Framework für skalierbare Big-Data-Verarbeitung. Es nutzt In-Memory-Computing zur Beschleunigung von Geschwindigkeit und bietet Komponenten für strukturierte Daten, SQL, Streaming und maschinelles Lernen.
Lernziele
Dieser Artikel vermittelt Kenntnisse ueber:
- Grundlagen der Apache Spark-Architektur und Funktionsweise
- Unterschiede zwischen RDDs und DataFrames
- Anwendungsbereiche der verschiedenen Spark-Komponenten
- Bedeutung von In-Memory-Computing
- Lazy Evaluation und DAG-basierte Aufgabenplanung
Kurzübersicht
Apache Spark entstand 2009 am AMPLab der University of California, Berkeley als Alternative zu MapReduce. Seit 2013 wird es von der Apache Software Foundation gepflegt. Spark basiert auf einem gerichteten azyklischen Graphen (DAG) zur Aufgabenplanung und verwendet Resilient Distributed Datasets (RDDs) als zentrale Datenstruktur. Durch In-Memory-Verarbeitung erreicht Spark Geschwindigkeitsvorteile gegenüber traditionellen Ansätzen wie Apache Hadoop MapReduce.
Kontext und Einordnung
Spark ergaenzt das Hadoop-Ökosystem durch direkte Integration in HDFS und YARN. Er kann parallel auf Cluster-Knoten laufen und unterstuetzt Hive. Spark integriert sich mit Cloud-Plattformen und Tools wie Kafka.
Begriffe und Definitionen
Resilient Distributed Dataset (RDD)
Ein RDD ist eine unveränderliche, fehlertolerante Sammlung von Elementen, die auf mehrere Cluster-Knoten verteilt und parallel verarbeitet werden kann. RDDs sind die zentrale Datenstruktur in Spark Core und befinden sich im Wartungsmodus.
Directed Acyclic Graph (DAG)
Ein DAG wird von Spark zur Aufgabenplanung und Orchestrierung von Aufgaben ueber den Cluster verwendet. Im Gegensatz zum zweistufigen MapReduce-Ansatz bietet der DAG-Scheduler effiziente Fehlertoleranz und Optimierung des Workflows.
Spark Core
Spark Core ist die Basis-Engine von Apache Spark. Sie stellt grundlegende Funktionen wie Scheduling, Optimierung, RDD-Abstraktion und Datenabstraktion bereit. Spark Core bildet das Fundament fuer alle anderen Spark-Bibliotheken.
Spark SQL
Spark SQL ermoglicht SQL-Abfragen auf DataFrames und integriert sich mit Apache Hive. Es bietet eine einheitliche Abfragesprache fuer strukturierte Daten.
Spark Streaming
Spark Streaming erweitert die Core-API um Echtzeit-Verarbeitung von Datenströmen. Es gibt zwei Ansaeze: DStreams (aeltere Mikro-Batch-Verarbeitung) und Structured Streaming (auf DataFrames basiert, empfohlen fuer neue Projekte).
MLlib / Spark ML
MLlib ist die Bibliothek fuer maschinelles Lernen in Spark. Spark ML ist die neuere API auf Basis von DataFrames und bietet vorgefertigte Pipelines.
GraphX
GraphX erweitert Spark um Graph-Verarbeitung. Es basiert auf RDDs und integriert sich in Cluster-Rechenum.
Architektur von Apache Spark
Die Architektur besteht aus folgenden Komponenten:
- Driver-Programm: Steuert die Anwendung und ueber den Cluster.
- Cluster-Manager: Verwaltet Cluster-Ressourcen und Aufgabenplanung.
- Worker Nodes: Fuehren Executors aus, verarbeiten Tasks.
- Executors: Fuehren Tasks auf RDD-Partitionen.
Verwendung
Bei der Verwendung von Spark werden Daten in RDDs oder DataFrames geladen, Transformationen angewendet und Aktionen ausgefuehrt.
Beispiele
Beispiel 1: RDD-Transformation und -Aktion
Eine Liste von Zahlen [1, 2, 3, 4, 5] wird in ein RDD geladen. Eine Transformation verdoppelt die Werte, und eine Aktion (Summe) liefert das Ergebnis zurueck.
Beispiel 2: DataFrame-Abfrage mit Spark SQL
Ein DataFrame mit Kundendaten wird erstellt. Eine SQL-Abfrage filtert Kunden ueber 30 Jahren und liefert ein Ergebnis als DataFrame zurueck.
Häufige Fehler und Tipps
Ein haeufiger Fehler ist die Verwendung von RDDs fuer neue Projekte. DataFrames sind bevorzugt. Structured Streaming wird fuer neue Anwendungen empfohlen.
Lazy Evaluation wird oft uebersehen. Lazy Evaluation besagt, dass Transformationen nicht sofort ausgefuehrt werden.
Eine Aktion ist erforderlich, um Ergebnisse zurueckzugeben.
Selbsttest
- Was ist der Hauptvorteil von Apache Spark?
- Nenne zwei Hauptkomponenten von Spark Core?
- Wie unterscheidet sich RDD von DataFrame?
- Was ist der Zweck von Lazy Evaluation?
- Nenne eine Streaming-API?
- Erkläre die Architektur-Komponenten.
- Nenne drei Vorteile von In-Memory-Computing?
Weiterführendes
Weitere Informationen finden Sie in der offiziellen Dokumentation von Apache Spark. Spark integriert sich mit Big-Data-Tools wie Kafka und Hive in Big-Data-Pipelines.