Was ist ein Resilient Distributed Dataset (RDD)?

6. Februar 2025

 

 

Autoren

James Holdsworth

Content Writer

Matthew Kosinski

Enterprise Technology Writer

Was ist ein Resilient Distributed Dataset (RDD)?

Ein Resilient Distributed Dataset (RDD) ist eine unveränderliche, fehlertolerante Sammlung von Elementen, die auf mehrere Knoten eines Clusters verteilt und parallel verarbeitet werden können. RDDs sind die grundlegende Datenstruktur in der Open-Source-Datenverarbeitungsengine Apache Spark.

Spark wurde entwickelt, um Unzulänglichkeiten in MapReduce zu begegnen – einem Programmiermodell für das „Chunking“ einer großen Datenverarbeitungsaufgabe in kleinere parallele Aufgaben.

MapReduce kann langsam und ineffizient sein. Es erfordert Replikation (Verwaltung mehrerer Kopien von Daten an verschiedenen Orten), Serialisierung (Koordination des Zugriffs auf Ressourcen, die von mehr als einem Programm verwendet werden) und intensive I/O (Eingabe/Ausgabe von Festplattenspeicher). 

Spark reduziert insbesondere unnötige Verarbeitung. Während MapReduce Zwischendaten auf die Festplatte schreibt, verwendet Spark RDDs zum Zwischenspeichern und Berechnen von Daten im Speicher. Dadurch kann die Analytics Engine von Spark Daten 10 bis 100 Mal schneller verarbeiten kann als MapReduce.1

RDD und Apache Spark

Apache Spark ist eine schnelle Open-Source-Anwendung für die Verarbeitung großer Datenmengen, die häufig für Anwendungen im Bereich maschinelles Lernen (ML) und künstliche Intelligenz (KI) verwendet wird. Spark kann als Verbesserung von Hadoop angesehen werden, genauer gesagt von Hadoops nativem Datenverarbeitungs-Framework MapReduce. 

Spark skaliert durch die Verteilung von Datenverarbeitungsworkflows auf große Computer-Cluster, mit eingebauter Unterstützung für paralleles Rechnen auf mehreren Knoten und Fehlertoleranz.

Es umfasst Programmierschnittstellen (APIs) für gängige Programmiersprachen der Data Science und des Data Engineering, darunter Java™, Python (PySpark), Scala und R.

Spark verwendet RDDs zur Verwaltung und Verarbeitung von Daten. Jedes RDD ist in logische Partitionen unterteilt, die gleichzeitig auf verschiedenen Knoten eines Clusters berechnet werden können. Benutzer können 2 Arten von RDD-Vorgängen ausführen: Transformationen und Aktionen.

  • Transformationen sind Vorgänge, bei denen ein neues RDD erstellt wird.

  • Aktionen weisen Spark an, Berechnungen durchzuführen und das Ergebnis an den Spark-Treiber zurückzugeben, den Prozess, der Spark-Jobs verwaltet.

Spark führt Transformationen und Aktionen auf RDDs im Speicher aus – der Schlüssel zur Geschwindigkeit von Spark. Spark kann zudem Daten im Arbeitsspeicher speichern oder die Daten für zusätzliche Persistenz auf die Festplatte schreiben. 

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. 

Wie RDD funktioniert

Resilient Distributed Datasets sind resilient und verteilt. Das bedeutet:

Resilient

RDDs werden als „resilient“ bezeichnet, weil sie Informationen zur Datenabstammung verfolgen, sodass verlorene Daten im Falle eines Ausfalls wiederhergestellt werden können, was RDDs äußerst fehlertolerant macht.

Stellen Sie sich als Beispiel für diese Datenresilienz einen Executor-Core vor, der bei der Verarbeitung einer RDD-Partition verloren geht. Der Treiber würde diesen Fehler erkennen und diese Partition würde einem anderen Executor-Core neu zugewiesen werden.

Verteilt

RDDs werden als „verteilt“ bezeichnet, weil sie in kleinere Datengruppen aufgeteilt werden, die auf verschiedene Rechenknoten verteilt und gleichzeitig verarbeitet werden können.

Zusätzlich zu diesen beiden Kernmerkmalen verfügt RDD über weitere Funktionen, die zu seiner Bedeutung und Funktionsweise in Spark beitragen.

In-Memory-Berechnungen

Viele Datenverarbeitungs-Frameworks – und insbesondere MapReduce – müssen mehrere Lese- oder Schreibvorgänge von externen Speichersystemen durchführen, was ihre Leistung verlangsamt.

RDD hilft Apache Spark, dieses Problem zu lösen. RDD reduziert die Festplatten-I/O, indem es eine In-Memory-Berechnung nutzt, die Zwischenergebnisse aus iterativen Vorgängen in einem Arbeitsspeicher (RAM) speichert. Die Verwendung von In-Memory-Berechnungen und -Speicherung kann einen schnelleren Zugriff und eine Verarbeitung nahezu in Echtzeit unterstützen.

RDDs können ebenfalls dazu beitragen, die Trainingszeit für Algorithmen des maschinellen Lernens sowie die Verarbeitung umfangreicher Big-Data-Analysen zu verkürzen. Der Einsatz von In-Memory-Berechnungen kann die für den Zugriff auf den Datenspeicher benötigte Zeit reduzieren.

Faule Bewertung

In Spark sind alle Transformationen – Vorgänge, die zum Erstellen eines neuen RDD angewendet werden – „faul“, d. h., die Daten werden nicht sofort geladen oder berechnet.

Stattdessen werden die Transformationen in einem gerichteten azyklischen Graphen (DAG) verfolgt und nur ausgeführt, wenn es eine bestimmte Handlungsaufforderung für einen Treiber gibt.

Das Treiberprogramm leitet die primäre Funktion und Vorgänge für Cluster-Computing auf Spark-Aufträgen, wie z. B. Aggregation, Erfassung, Zählung oder Speicherung der Ausgabe in einem Dateisystem.

Zu den Dutzenden von möglichen Aktionen und Transformationen gehören aggregateByKey, countByKey, flatMap, groupByKey, reduceByKey und sortbyKey.

Die faule Bewertung hilft bei der Optimierung von Datenverarbeitungspipelines, indem unnötige Verarbeitung vermieden wird und überflüssige Berechnungen gekappt werden.

Partitionierung

Spark partitioniert RDDs automatisch über mehrere Knoten, sodass es riesige Datenmengen verarbeiten kann, die nicht auf einen einzigen Knoten passen. Um Korruption zu vermeiden, wird jede einzelne Partition auf einem Knoten gespeichert und nicht über mehrere Knoten verteilt. 

Mit RDD können Unternehmen die Platzierung von Rechenpartitionen definieren, sodass Aufgaben in der Nähe der erforderlichen Daten ausgeführt werden können. Diese Platzierung trägt dazu bei, die Verarbeitungsgeschwindigkeit zu erhöhen.

Darüber hinaus kann die Anzahl der Steuerprogramme (Computer, die die vom Treiber zugewiesenen Aufgaben ausführen) im Cluster erhöht werden, um die Parallelität im System zu verbessern. Der Grad der Parallelität der Ausgabe hängt von der Anzahl der Partitionen im übergeordneten RDD ab. 

RDDs können in logischen Partitionen über einen Cluster hinweg erstellt werden, um parallele Vorgänge auf mehreren Knoten zu ermöglichen. Die RDDs können aus verschiedenen stabilen Speicherquellen erstellt werden, wie z. B. Amazon Web Services (AWS) S3, Hadoop Distributed File System (HDFS)Apache HBase und Cassandra, oder auch mit Programmiersprachen wie Scala und Python.

AI Academy

Ist Datenverwaltung das Geheimnis generativer KI?

Erfahren Sie, warum qualitativ hochwertige Daten für den erfolgreichen Einsatz generativer KI unerlässlich sind.

Persistenz

Spark RDD kann Datensätze vorgangsübergreifend im Speicher zwischenspeichern. Jeder Knoten kann die Partitionen, die er berechnet hat, im Speicher speichern und sie für nachfolgende Aktionen auf dem Datensatz oder den resultierenden Datensätzen wiederverwenden. Diese Persistenz kann die Verarbeitung erheblich beschleunigen.

Spark bietet Benutzern zudem interaktive Speicheroptionen, die ihnen die Kontrolle darüber geben, wie Daten gespeichert werden. Daten können im Hauptspeicher, auf der Festplatte oder in einer Mischung aus beidem gespeichert werden.

Unveränderlichkeit

RDDs sind unveränderlich, d. h. sie können nach der Erstellung nicht mehr geändert werden. Die Unveränderlichkeit trägt dazu bei, dass die Daten bei mehreren Vorgängen über einen längeren Zeitraum hinweg stabil bleiben.

Sie macht außerdem die gemeinsame Nutzung von Daten über mehrere Prozesse hinweg einfacher und sicherer und trägt zum Schutz vor Beschädigungen bei, die durch gleichzeitige Aktualisierungen von verschiedenen Threads verursacht werden können. 

RDDs sind zwar unveränderlich, Benutzer können jedoch neue RDDs erstellen, indem sie Transformationen auf bestehende Datensätze anwenden, was die Aktualisierung von Datensätzen ermöglicht, ohne die ursprünglichen Daten zu ändern.

Kapazität für unstrukturierte Daten

RDD kann sowohl unstrukturierte als auch strukturierte Daten verarbeiten. Bei der Verarbeitung unstrukturierter Daten können Informationen aus mehreren Arten von Datenbanken, Medienstreams oder Textdateien abgerufen werden, ohne dass ein festes Schema oder die Erstellung eines DataFrame erforderlich ist.

Allerdings können Benutzer in Spark DataFrames erstellen, wodurch sie von bestimmten Optimierungen profitieren und so eine bessere Leistung erzielen können.

Weiterführende Lösungen
Software und Lösungen für die Datenverwaltung

Entwerfen Sie eine Datenstrategie, die Datensilos beseitigt, die Komplexität reduziert und die Datenqualität verbessert, um außergewöhnliche Kunden- und Mitarbeitererfahrungen zu schaffen.

Lösungen für Datenmanagement erkunden
IBM watsonx.data

Watsonx.data ermöglicht es Ihnen, Analysen und KI mit all Ihren Daten zu skalieren, unabhängig davon, wo sie sich befinden, und zwar über einen offenen, hybriden und kontrollierten Datenspeicher.

IBM watsonx.data entdecken
Beratungsservices für Daten und Analysen

Erschließen Sie den Wert von Unternehmensdaten mit IBM Consulting und bauen Sie ein erkenntnisgesteuertes Unternehmen auf, das Ihnen geschäftliche Vorteile verschafft.

Analyse-Services entdecken
Machen Sie den nächsten Schritt

Entwerfen Sie eine Datenstrategie, die Datensilos beseitigt, die Komplexität reduziert und die Datenqualität verbessert, um außergewöhnliche Kunden- und Mitarbeitererfahrungen zu schaffen.

Lösungen für Datenmanagement erkunden IBM watsonx.data entdecken
Fußnote

1 Apache Spark™, Apache Software Foundation, 20. Dezember 2024.