Apache Spark
Apache Spark ist eine blitzschnelle Open-Source-Datenverarbeitungs-Engine für maschinelles Lernen und KI-Anwendungen, die von der größten Open-Source-Community für Big Data unterstützt wird
Abstraktes Bild in Blau und Schwarz
Was ist Apache Spark?

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

Apache Spark (Spark) ist eine Open-Source-Datenverarbeitungs-Engine für große Datensätze. Es wurde entwickelt, um die Rechengeschwindigkeit, Skalierbarkeit und Programmierbarkeit bereitzustellen, die für Big Data erforderlich sind – insbesondere für Streaming-Daten, Graphdaten, maschinelles Lernen und Anwendungen für künstliche Intelligenz (KI).

Die Analytics Engine von Spark verarbeitet Daten 10-100-mal schneller als Alternativen. Sie skaliert, indem Verarbeitungsarbeit auf große Cluster von Computern verteilt wird, mit integrierter Parallelität und Fehlertoleranz. Sie enthält sogar APIs für Programmiersprachen, die bei Datenanalysten und Datenwissenschaftlern beliebt sind, darunter Scala, Java, Python und R.

Spark wird oft verglichen mit Apache Hadoop und insbesondere mit MapReduce, der nativen Datenverarbeitungskomponente von Hadoop. Der Hauptunterschied zwischen Spark und MapReduce besteht darin, dass Spark die Daten für nachfolgende Schritte verarbeitet und im Arbeitsspeicher speichert – ohne auf die Festplatte zu schreiben oder von ihr zu lesen – was zu wesentlich schnelleren Verarbeitungsgeschwindigkeiten führt. (Weitere Informationen dazu, wie Spark mit Hadoop verglichen wird und es ergänzt, finden Sie an anderer Stelle in diesem Artikel.)

Spark wurde 2009 an 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.

Die Erstellung des besten Data-Lake bedeutet, den richtigen Objektspeicher auszuwählen – ein Bereich, in dem Apache Spark erheblich helfen kann.

E-Book lesen (909 KB)

Funktionsweise von Apache Spark

Apache Spark hat eine hierarchische Master-/Slave-Architektur. Der Spark-Treiber ist der Master-Knoten, der den Cluster-Manager steuert, der die Arbeiter-Knoten (Slave-Knoten) verwaltet und Datenergebnisse an den Anwendungsclient übermittelt.

Basierend auf dem Anwendungscode generiert Spark Driver den SparkContext, der mit dem Cluster-Manager – Sparks eigenständigem Cluster-Manager oder anderen Cluster-Managern wie Hadoop YARN, Kubernetes oder Mesos – zusammenarbeitet, um die Ausführung über die Knoten zu verteilen und zu überwachen. Es erstellt auch Resilient Distributed Datasets (RDDs), die für die hervorragende Verarbeitungsgeschwindigkeit von Spark essenziell sind.

Resilient Distributed Dataset (RDD)

 

Resilient Distributed Datasets (RDDs) sind fehlertolerante Sammlungen von Elementen, die auf mehrere Knoten in einem Cluster 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 Auflistung mit der SparkContext-Parallelize-Methode zur Verarbeitung in eine RDD parallelisiert. Sobald Daten in eine RDD geladen wurden, führt Spark Transformationen und Aktionen für RDDs im Arbeitsspeicher durch – der Schlüssel zur Geschwindigkeit von Spark. Spark speichert die Daten auch im Arbeitsspeicher, es sei denn, dem System geht der Arbeitsspeicher aus oder der Benutzer beschließt, die Daten zur Persistenz auf die Festplatte zu schreiben.

Jeder Datenbestand in einem RDD ist in logische Partitionen unterteilt, die auf verschiedenen Knoten des Clusters berechnet werden können. Benutzer können zwei Arten von RDD-Operationen ausführenTransformationen und AktionenTransformationen sind Operationen, die zum Erstellen eines neuen RDDs angewendet werdenAktionen werden verwendet, um Apache Spark anzuweisen, Berechnungen anzuwenden und das Ergebnis an den Treiber zurückzugeben.

Spark unterstützt eine Vielfalt von Aktionen und Transformationen auf RDDs. Diese Distribution wird durch Spark ausgeführt, sodass sich die Benutzer nicht um die Berechnung der richtigen Distribution kümmern müssen.

Directed Acyclic Graph (DAG)

 

Im Gegensatz zum zweistufigen Ausführungsprozess in MapReduce erstellt Spark einen Directed Acyclic Graph (DAG), um die Aufgaben und Orchestrierung von Worker-Knoten im gesamten Cluster zu terminieren. Während Spark in der Taskausführung Daten verarbeitet und umwandelt, sorgt der DAG-Scheduler für mehr Effizienz, indem die Worker-Knoten im gesamten Cluster koordiniert werden. Dieses Task-Tracking ermöglicht Fehlertoleranz, da aufgezeichnete Operationen erneut auf die Daten aus einem früheren Zustand angewendet werden.

DataFrames und Datasets

 

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

DataFrames sind die gängigsten ApIs (Application Programming Interfaces) und stellen eine Datentabelle mit Zeilen und Spalten dar. Obwohl RDD eine wichtige Funktion für Spark war, befindet es sich jetzt im Wartungsmodus. Aufgrund der Beliebtheit der Machine Learning Library (MLlib) von Spark haben DataFrames eine führende Rolle als primäre API für MLlib übernommen. Dies ist wichtig zu beachten, wenn Sie die MLlib-API verwenden, da DataFrames Einheitlichkeit in den verschiedenen Sprachen wie Scala, Java, Python und R bieten.

Datasets sind eine Erweiterung von DataFrames, die eine typsichere, objektorientierte Programmierungsbenutzerschnittstelle zur Verfügung stellen. Datasets sind standardmäßig eine Zusammenstellung von stark typisierten JVM-Objekten, im Gegensatz zu DataFrames.

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

Spark Core

 

Spark Core ist die Basis für die gesamte parallele Datenverarbeitung und regelt die Terminierung, Optimierung, RDD und Datenabstraktion. Spark Core bietet die funktionale Grundlage für die Spark-Bibliotheken, Spark SQL, Spark-Streaming, die MLlib Machine Learning-Bibliothek und die GraphX-Graphdatenverarbeitung. Der Spark Core und der Cluster-Manager verteilen Daten über den Spark-Cluster und abstrahieren sie. Diese Verteilung und Abstraktion machen den Umgang mit Big Data sehr schnell und benutzerfreundlich.

Spark-APIs

 

Spark enthält eine Vielzahl von Anwendungsprogrammierschnittstellen (APIs), um die Leistungsfähigkeit von Spark einem möglichst breiten Publikum zugänglich zu machen. Spark SQL ermöglicht Interaktion mit RDD-Daten auf relationale Art und Weise. Spark verfügt auch über eine gut dokumentierte API für Scala, Java, Python und R. Jede Sprach-API in Spark hat bestimmten Nuancen im Umgang mit Daten. RDDs, DataFrames und Datasets sind in jeder Sprach-API verfügbar. Mit APIs für eine Vielzahl von Sprachen macht Spark die Verarbeitung von Big  Data für eine größere Anzahl von Personen mit einem Hintergrund in Entwicklung, Datenwissenschaft und Statistik zugänglich.

Relevante Produkte

Analytics Engine

Apache Spark und maschinelles Lernen

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

Apache Spark  MLlib

 

Eine der kritischen Funktionalitäten von Apache Spark ist die Fähigkeit zum maschinellen Lernen, verfügbar in der Spark MLlib. Apache SparkMLlib  bietet eine sofort einsatzbereite Lösung zur Klassifizierung und Regression, Collaborative Filtering, Clustering, verteilte lineare Algebra, Entscheidungsbäume, Random Forests, Gradient-verstärkte Bäume, häufiges Pattern Mining, Auswertungsmetriken und Statistiken. Das Leistungsspektrum der MLlib, kombiniert mit den verschiedenen Datentypen, die Spark handhaben kann, machen Apache Spark zu einem unabdingbaren Big Data Tool.

Spark GraphX

 

Zusätzlich zu den API-Funktionen verfügt Spark über Spark GraphX, eine neue Ergänzung zu Spark, die zur Lösung von Graphproblemen entwickelt wurde. GraphX ist eine grafische Abstraktion, die RDDs für Graphen und graphenparallele Berechnung erweitert. Spark GraphX lässt sich in Graphdatenbanken integrieren, die Interkonnektivitätsinformationen oder Netze von Verbindungsinformationen speichern, wie die eines sozialen Netzwerks.

Spark-Streaming

 

Spark-Streaming ist eine Erweiterung der zentralen Spark-API, die eine skalierbare, fehlertolerante Verarbeitung von Livedaten-Streams ermöglicht. Da 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 Graphverarbeitung von Spark liefern. Spark-Streaming basiert auf der Spark SQL-Engine und ermöglicht auch eine inkrementelle Stapelverarbeitung, die zu einer schnelleren Verarbeitung der gestreamten Daten führt.

Weitere Links

Hadoop

Big Data Analytics

Spark vs. Apache Hadoop und MapReduce

„Spark vs. Hadoop“ ist ein häufig gesuchter Begriff im Web, aber wie oben erwähnt, ist Spark eher eine Erweiterung von Hadoop – insbesondere von MapReduce, der nativen Datenverarbeitungskomponente von Hadoop. Tatsächlich basiert Spark auf dem MapReduce-Framework, und heute enthalten die meisten Hadoop-Distributionen Spark.

Wie Spark ermöglicht MapReduce Programmierern, Anwendungen zu schreiben, die riesige Datensätze schneller verarbeiten, indem Teile des Datensatzes parallel über große Computercluster hinweg verarbeitet werden. Während MapReduce Daten auf der Festplatte verarbeitet und dadurch Lese- und Schreibzeiten hinzufügt, die die Verarbeitung verlangsamen, führt Spark Berechnungen im Arbeitsspeicher durch, was viel schneller ist. Dadurch kann Spark Daten bis zu 100-mal schneller verarbeiten als MapReduce. 

Die integrierten APIs von Spark für mehrere Sprachen machen es für Entwickler praktischer und zugänglicher als MapReduce, das den Ruf hat, schwierig zu programmieren zu sein. Im Gegensatz zu MapReduce kann Spark Stream-Verarbeitungsanwendungen auf Hadoop-Clustern mit YARN, dem Ressourcenmanagement- und Job-Scheduling-Framework von Hadoop, ausführen. Wie oben erwähnt, ergänzt Spark das Leistungsspektrum von MLlib, GraphX und SparkSQL. Und Spark kann Daten aus anderen Datenquellen außerhalb der Hadoop-Anwendung verarbeiten, einschließlich Apache Kafka.

Ansonsten ist Spark mit Hadoop kompatibel und komplementär zu Hadoop. 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 (ein Hadoop-basiertes Data-Warehouse).

Relevante Lösungen
AIOps

Erfahren Sie mehr über AIOps, ein Bereich der Analysen, künstliche Intelligenz und andere Technologien einsetzt, um den IT-Betrieb effizienter und effektiver zu machen.

Mehr zu AIOps erfahren
IBM Spectrum Conductor

Stellen Sie IBM Spectrum Conductor und andere Services zuverlässig für eine mandantenfähige Unternehmensumgebung bereit, sowohl vor Ort als auch in der Cloud.

Mehr zu IBM Spectrum Computing erfahren
IBM Analytics Engine

Analytics Engine ist ein Service für die Erstellung von Analyseanwendungen, der Apache Spark und Apache Hadoop kombiniert.

Mehr zu IBM Analytics Engine erfahren
Machen Sie den nächsten Schritt

Spark ist ein leistungsfähiges Tool, das zu einer Unternehmensdatenlösung hinzugefügt werden kann, um bei der Analyse von Big Data zu helfen. Es knüpft auch gut an vorhandene IBM Lösungen für Big Data an. IBM Spectrum Conductor ist eine Multi-Tenant-Plattform für die Bereitstellung und Verwaltung anderer Apache Spark-Anwendungsframeworks auf einem gemeinsam genutzten Cluster von Ressourcen. Spectrum Conductor bietet Workload-Management, Monitoring, Alerting, Berichterstellung und Diagnose und kann mehrere aktuelle und verschiedene Versionen von Spark und anderen Frameworks gleichzeitig ausführen. Benutzer können Apache Spark mit einer integrierten Spark-Distribution ohne großen Aufwand bereitstellen und verwalten.

IBM Spectrum Computing noch heute erkunden