Was ist Apache Spark?

Luftaufnahme des Daches eines Gebäudes

Was ist Apache Spark?

Apache Spark ist eine blitzschnelle Open-Source-Engine zur Datenverarbeitung für maschinelles Lernen und KI-Anwendungen, unterstützt von der größten Open-Source-Community im Bereich Big Data.

Apache Spark (Spark) verarbeitet problemlos große Datensätze und ist ein schnelles, universelles Cluster-System, das sich gut für PySpark eignet. Es ist darauf ausgelegt, das Maß an Rechengeschwindigkeit, Skalierbarkeit und Programmierbarkeit zu bieten, das für Big Data erforderlich ist – insbesondere für Streaming-Daten, Diagrammdaten, Analysen, maschinelles Lernen, die Verarbeitung großer Datenmengen und Anwendungen der künstlichen Intelligenz (KI).

Die Analytics Engine von Spark verarbeitet Daten 10 bis 100 Mal schneller als einige Alternativen für kleinere Workloads, wie z. B. Hadoop. Die Skalierung erfolgt durch die Verteilung von Verarbeitungsworkflows auf große Computer-Cluster mit integrierter Parallelität und Fehlertoleranz. Es umfasst sogar APIs für Programmiersprachen, die bei Datenanalysten und Data Scientists beliebt sind, darunter Scala, Java, Python und R.

Spark wird oft mit Apache Hadoop verglichen, und insbesondere mit Hadoop MapReduce, der nativen Datenverarbeitungskomponente von Hadoop. Der Hauptunterschied zwischen Spark und MapReduce besteht darin, dass Spark die Daten verarbeitet und für nachfolgende Schritte im Arbeitsspeicher aufbewahrt – ohne sie auf die Festplatte zu schreiben oder von ihr abzulesen –, was zu deutlich schnelleren Verarbeitungsgeschwindigkeiten führt. (Mehr Informationen darüber, wie Spark im Vergleich zu Hadoop abschneidet und es ergänzt, finden Sie weiter unten in diesem Artikel).

Spark wurde 2009 im AMPLab der UC Berkeley entwickelt. Heute wird es von der Apache Software Foundation verwaltet und verfügt mit über 1.000 Mitwirkenden über die größte Open-Source-Community im Bereich Big Data. Es ist auch eine Kernkomponente mehrerer kommerzieller Big-Data-Angebote.

3D-Design aus Kugeln, die auf einer Schiene rollen

Die neuesten Erkenntnisse und Insights zu KI

Entdecken Sie von Experten kuratierte Erkenntnisse und Neuigkeiten zu KI, Cloud und mehr im wöchentlichen Newsletter Think. 

So funktioniert Apache Spark

Apache Spark hat eine hierarchische primäre/sekundäre Architektur. Der Spark Driver ist der primäre Knoten. Dieser steuert den Cluster-Manager, der die sekundären Knoten verwaltet und Datenergebnisse an den Anwendungs-Client schickt.

Basierend auf dem Anwendungscode generiert Spark Driver den SparkContext, der mit dem Cluster-Manager – dem Standalone Cluster Manager von Spark oder anderen Cluster-Managern wie Hadoop YARN, Kubernetes oder Mesos – zusammenarbeitet, um die Ausführung auf die Knoten zu verteilen und zu überwachen. Außerdem werden Resilient Distributed Datasets (RDDs) erstellt, die entscheidend für die bemerkenswerte Verarbeitungsgeschwindigkeit von Spark sind.

Resilient Distributed Dataset (RDD)

Resilient Distributed Datasets (RDDs) sind fehlertolerante Sammlungen von Elementen, die auf mehrere Knoten eines Clusters verteilt und parallel bearbeitet werden können. RDDs sind eine grundlegende Struktur in Apache Spark.

Spark lädt Daten, indem es auf eine Datenquelle verweist oder eine vorhandene Sammlung mit der SparkContext-Parallelisierungsmethode zum Zwischenspeichern von Daten in einem RDD zur Verarbeitung parallelisiert. Sobald die Daten in ein RDD geladen sind, führt Spark Transformationen und Aktionen auf RDDs im Speicher aus, was für Spark’s Geschwindigkeit entscheidend ist. Spark hinterlegt die Daten auch im Speicher, es sei denn, das System hat nicht mehr genügend Speicher oder der Benutzer beschließt, die Daten zur dauerhaften Speicherung auf die Festplatte zu schreiben.

Jeder Datensatz in einem RDD wird in logische Partitionen unterteilt, die auf verschiedenen Knoten des Clusters berechnet werden können. Und Benutzer können zwei Arten von RDD-Operationen ausführen: Transformationen und Aktionen. Transformationen sind Vorgänge, die angewendet werden, um ein neues RDD zu erstellen. Mithilfe von Aktionen wird Apache Spark angewiesen, Berechnungen durchzuführen und die Ergebnisse an den Treiber zurückzugeben.

Spark unterstützt eine Vielzahl von Aktionen und Transformationen auf RDDs. Diese Verteilung wird von Spark durchgeführt, sodass sich die Benutzer keine Gedanken über die Berechnung der richtigen Verteilung machen müssen.

Directed Acyclic Graph (DAG)

Im Gegensatz zum zweistufigen Ausführungsprozess in MapReduce erstellt Spark einen Directed Acyclic Graph (DAG), um Aufgaben und die Orchestrierung von Worker-Knoten im gesamten Cluster zu planen. Da Spark bei der Ausführung von Aufgaben Daten verarbeitet und umwandelt, sorgt der DAG-Scheduler für mehr Effizienz, indem er die Worker-Knoten im gesamten Cluster orchestriert. Diese Aufgabenverfolgung gewährleistet eine Fehlertoleranz, da sie die aufgezeichneten Vorgänge erneut auf die Daten eines früheren Zustands anwendet.

DataFrames und Datensätze

Zusätzlich zu RDDs verarbeitet Spark zwei weitere Datentypen: DataFrames und Datensätze.

DataFrames sind die am häufigsten verwendeten strukturierten Anwendungsprogrammierschnittstellen (APIs) und stellen eine Datentabelle mit Zeilen und Spalten dar. Obwohl RDD eine kritische Funktion für Spark war, befindet es sich derzeit im Wartungsmodus. Aufgrund der Beliebtheit der Machine Learning Library (MLlib) von Spark haben DataFrames die Hauptrolle als primäre API für MLlib übernommen (eine Reihe von Algorithmen für maschinelles Lernen zur Verbesserung der Skalierbarkeit sowie Tools für die Auswahl von Merkmalen und den Aufbau von ML-Pipelines). Dies ist wichtig zu beachten, wenn Sie die MLlib-API verwenden, da DataFrames für Einheitlichkeit in den verschiedenen Sprachen wie Scala, Java, Python und R sorgen.

Datensätze sind eine Erweiterung von DataFrames, die eine typensichere, objektorientierte Programmierschnittstelle bieten. Im Gegensatz zu DataFrames sind Datensätze standardmäßig eine Sammlung von stark typisierten JVM-Objekten.

Spark SQL ermöglicht die Abfrage von Daten aus DataFrames und SQL-Datenspeichern wie Apache Hive. Spark SQL-Abfragen geben einen DataFrame oder Datensatz zurück, wenn sie in einer anderen Sprache ausgeführt werden.

Spark Core

Spark Core ist die Grundlage für die parallele Datenverarbeitung und kümmert sich um Planung, Optimierung, RDD und Datenabstraktion. Spark Core bietet die funktionale Grundlage für die Spark-Bibliotheken, Spark SQL, Spark Streaming, die MLlib-Bibliothek für maschinelles Lernen und GraphX für die Diagrammdatenverarbeitung. Der Spark Core und der Cluster-Manager verteilen Daten über den Spark-Cluster und abstrahieren sie. Durch diese Verteilung und Abstraktion wird der Umgang mit Big Data sehr schnell und benutzerfreundlich.

Spark-APIs

Spark umfasst eine Vielzahl von Anwendungsprogrammierschnittstellen (APIs), um die Leistungsfähigkeit von Spark einem möglichst breiten Publikum zugänglich zu machen. Spark SQL ermöglicht die relationale Interaktion mit RDD-Daten. Spark hat auch eine gut dokumentierte API für Scala, Java, Python und R. Jede Sprach-API in Spark hat ihre spezifischen Nuancen im Umgang mit Daten. RDDs, DataFrames und Datensätze sind in jeder Sprach-API verfügbar. Mit APIs für eine Vielzahl von Sprachen macht Spark die Verarbeitung von Big Data für unterschiedlichste Personengruppen mit Hintergrund in den Bereichen Entwicklung, Data Science, Datentechnik und Statistik zugänglich.

Think 2025

Nutzen Sie die Hybrid Cloud, um den Wert der KI in großem Maßstab zu steigern

Erfahren Sie, wie eine gut durchdachte hybride Architektur Daten vereinheitlicht, die Vorteile von High-Performance-Computing nutzt und die Sicherheit verbessert, um Sie auf Ihrem Weg zum Erfolg mit KI im großen Maßstab zu unterstützen.

Vorteile von Apache Spark 

Spark beschleunigt die Entwicklung und den Betrieb auf verschiedene Weise. Spark unterstützt Teams bei folgenden Aufgaben:

  • Beschleunigung der App-Entwicklung: Die Streaming- und SQL-Programmiermodelle von Apache Spark, unterstützt von MLlib und GraphX, erleichtern die Entwicklung von Apps, die maschinelles Lernen und Diagrammanalysen nutzen.

  • Schnellere Innovation:APIs bieten Benutzerfreundlichkeit bei der Bearbeitung von halbstrukturierten Daten und der Transformation von Daten.

  • Optimierung mit offenen Technologien: Die OpenPower Foundation ermöglicht GPU-, CAPI Flash-, RDMA- und FPGA-Beschleunigung sowie Innovationen im Bereich des maschinellen Lernens, um die Leistung von Apache-Spark-Workloads zu optimieren.

  • Schnellere Prozesse: Spark kann bei kleineren Workloads aufgrund seiner fortschrittlichen In-Memory-Computing-Engine und der Datenspeicherung auf Festplatten bis zu 100-mal schneller als Hadoop sein.

  • Schnellerer Speicherzugriff: Spark kann verwendet werden, um einen großen Speicher für die Datenverarbeitung zu schaffen, sodass fortgeschrittene Benutzer über Schnittstellen mit Python, R und Spark SQL auf Daten zugreifen können.

Apache Spark und maschinelles Lernen

Spark verfügt über verschiedene Bibliotheken, die die Funktionen auf maschinelles Lernen, künstliche Intelligenz (KI) und Stream-Verarbeitung erweitern.

Apache Spark MLlib

Eine der wichtigsten Funktionen von Apache Spark sind die in der Spark MLlib verfügbaren maschinellen Lernfunktionen, die eine sofort einsatzbereite Lösung für Klassifizierung und Regression, kollaboratives Filtern, Clustering, verteilte lineare Algebra, Decision Trees, Random Forests, Gradient-Boosted Trees, Mining häufiger Muster, Auswertungsmetriken und Statistiken bieten. Die Funktionen von MLlib in Kombination mit den verschiedenen Datentypen machen Apache Spark zu einem unverzichtbaren Big-Data-Tool.

Spark GraphX

Spark GraphX verfügt nicht nur über API-Funktionen, sondern wurde auch für die Lösung von Diagrammproblemen entwickelt. GraphX ist eine Diagrammabstraktion, die RDDs für Diagramme und die graphenparallele Berechnung erweitert. Spark GraphX lässt sich in Diagrammdatenbanken integrieren, die Informationen über Verbindungen oder Verbindungsnetze speichern, wie z. B. in einem sozialen Netzwerk.

Spark Streaming

Spark Streaming ist eine Erweiterung der Spark-Kern-API, die eine skalierbare, fehlertolerante Verarbeitung von Live-Datenströmen ermöglicht. Während Spark Streaming Daten verarbeitet, kann es Daten an Dateisysteme, Datenbanken und Live-Dashboards für Echtzeit-Streaming-Analysen mit den Algorithmen für maschinelles Lernen und Diagrammverarbeitung von Spark schicken. Spark Streaming basiert auf der Spark SQL-Engine und ermöglicht auch eine inkrementelle Batch-Verarbeitung, die zu einer schnelleren Verarbeitung von gestreamten Daten führt.

Spark im Vergleich zu Apache Hadoop und MapReduce

„Spark im Vergleich zu Hadoop“ oder „Spark vs. Hadoop“ wird im Internet häufig gesucht, aber wie oben erwähnt, ist Spark eher eine Erweiterung für Hadoop – und genauer gesagt für die native Datenverarbeitungskomponente von Hadoop: MapReduce. Tatsächlich baut Spark auf dem MapReduce-Framework auf und heute enthalten die meisten Hadoop-Distributionen Spark.

Wie Spark ermöglicht MapReduce es Programmierern, Anwendungen zu schreiben, die riesige Datensätze schneller verarbeiten, indem Teile des Datensatzes parallel auf großen Computer-Clustern verarbeitet werden. Aber wo MapReduce Daten auf der Festplatte verarbeitet und Lese- und Schreibzeiten hinzukommen, die die Verarbeitung verlangsamen, führt Spark Berechnungen im Speicher durch, was viel schneller ist. Dadurch kann Spark Daten bis zu 100 Mal schneller verarbeiten als MapReduce.

Die in Spark integrierten APIs für mehrere Sprachen machen es für Entwickler praktischer und zugänglicher als MapReduce, das in dem Ruf steht, schwierig zu programmieren zu sein. Im Gegensatz zu MapReduce kann Spark Anwendungen für die Stream-Verarbeitung auf Hadoop-Clustern mit YARN ausführen, dem Framework für Ressourcenverwaltung und Jobplanung von Hadoop. Wie oben erwähnt, fügt Spark die Funktionen von MLlib, GraphX und SparkSQL hinzu. Außerdem kann Spark Daten aus anderen Datenquellen außerhalb der Hadoop-Anwendung verarbeiten, einschließlich Apache Kafka.

Ansonsten ist Spark mit Hadoop kompatibel und ergänzt es. Es kann Hadoop-Daten verarbeiten, einschließlich Daten aus HDFS (dem Hadoop Distributed File System), HBase (einer nicht relationalen Datenbank, die auf HDFS ausgeführt wird), Apache Cassandra (eine NoSQL-Alternative zu HDFS) und Hive (einem Hadoop-basierten Data Warehouse).

Weiterführende Lösungen
IBM Z Operational Log and Data Analytics 

Beschleunigen Sie die Identifizierung hybrider Vorfälle mit Betriebsanalysen nahezu in Echtzeit.

Mehr zu IBM Z
Cloud-Analyselösungen

Schalten Sie geschäftsverändernde Ergebnisse mit Cloud-Analyse-Lösungen frei, die es Ihnen ermöglichen, Daten einfach zu analysieren und Modelle für maschinelles Lernen zu erstellen.

Cloud-Analyselösungen erkunden
Cloud-Beratungsleistungen

Entdecken Sie neue Funktionen und steigern Sie die geschäftliche Agilität mit IBM Cloud Consulting Services.

Erkunden Sie Cloud-Beratungsleistungen
Machen Sie den nächsten Schritt

Mit leistungsstarken Analysen, die Mainframe und Cloud verbinden, erhalten Sie Erkenntnisse in Echtzeit aus Ihren IBM Z-Daten, damit Sie schneller handeln, Risiken reduzieren und intelligentere Entscheidungen treffen können.

Mehr zu IBM Z Weitere Informationen erhalten