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
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.
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.
Resilient Distributed Datasets sind resilient und verteilt. Das bedeutet:
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.
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.
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.
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.
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.
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.
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.
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.
Erfahren Sie, wie ein offener Data-Lakehouse-Ansatz vertrauenswürdige Daten und eine schnellere Durchführung von Analysen und KI-Projekten ermöglichen kann.
IBM wurde im 2024 Gartner Magic Quadrant for Data Integration Tools zum 19. Mal in Folge als ein führender Anbieter im Bereich Datenintegrationstools genannt.
Erkunden Sie den Leitfaden für Datenexperten zum Aufbau eines datengestützten Unternehmens und zur Förderung von geschäftlichen Vorteilen.
Erfahren Sie, warum KI-gestützte Datenintelligenz und Datenintegration entscheidend sind, um die Bereitschaft für strukturierte und unstrukturierte Daten zu fördern und KI-Ergebnisse zu beschleunigen.
Vereinfachen Sie den Datenzugriff und automatisieren Sie die Data Governance. Entdecken Sie die Vorteile einer Data-Lakehouse-Strategie für Ihre Datenarchitektur, einschließlich der Kostenoptimierung Ihrer Workloads und der Skalierung von KI und Analysen, mit all Ihren Daten, überall.
Erkunden Sie, wie IBM Research regelmäßig in neue Funktionen für IBM Cloud Pak® for Data integriert wird.
Erhalten Sie einzigartige Einblicke in die sich entwickelnde Geschäftswelt der ABI-Lösungen und hebt die wichtigsten Ergebnisse, Annahmen und Empfehlungen für Führungskräfte im Bereich Daten und Analysen hervor.
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.
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.
Erschließen Sie den Wert von Unternehmensdaten mit IBM Consulting und bauen Sie ein erkenntnisgesteuertes Unternehmen auf, das Ihnen geschäftliche Vorteile verschafft.
1 Apache Spark™, Apache Software Foundation, 20. Dezember 2024.