Moderne Datenintegration erfordert sowohl zuverlässige Batch- als auch zuverlässige Streaming-Berechnungen, um wichtige Geschäftsprozesse zu unterstützen. Traditionell waren im Bereich der Unternehmenssoftware Batch-ETL (Extract Transform and Load) und Streaming CEP (Complex Event Processing) zwei völlig unterschiedliche Produkte mit unterschiedlichen Mitteln zur Formulierung von Berechnungen. Bis vor kurzem wurden im Bereich der Open-Source-Software für Big Data Stapelverarbeitung und Streaming getrennt behandelt, z. B. MapReduce für Stapelverarbeitung und Storm für Streams. Jetzt gibt es immer mehr Datenverarbeitungs-Engines, die versuchen, Modelle sowohl für Stapelverarbeitung als auch für Streaming bereitzustellen, wie z. B. Apache Spark und Apache Flink. In einer Reihe von Beiträgen werde ich die Notwendigkeit eines einheitlichen Programmiermodells und einer zugrunde liegenden hybriden Datenverarbeitungsarchitektur erläutern, die sowohl Stapelverarbeitung als auch Streaming unterstützt. Streaming-Berechnungen für die Datenintegration. Für die Datenintegration muss dieses Modell jedoch auf einer Ebene angesiedelt sein, die von spezifischen Datenverarbeitungsmaschinen abstrahiert.
Bei SnapLogic haben wir ein hybrides visuelles Programmiermodell und eine Ausführungsplattform entwickelt. Wir haben unsere eigene hybride Ausführungsmaschine implementiert, die Batch- und Streaming-Berechnungen ausführen kann. Darüber hinaus können wir SnapLogic-Datenflusspipelines in MapReduce- und Spark-Berechnungen umwandeln. Unser Modell isoliert die Benutzer von der Komplexität der zugrunde liegenden Datenverarbeitungs-Engines. Diese Isolierung ermöglicht es SnapLogic-Pipelines, auf dem am besten geeigneten Ziel auszuführen. Es verbirgt auch Änderungen an den Zielen und ermöglicht eine einfache Migration von einem Ziel zu einem anderen. Dieser Ansatz ermöglicht es den Benutzern auch, die Vorteile neuer Datenverarbeitungssysteme zu nutzen, ohne die Datenpipelines zu portieren.
Batch-Berechnungen verstehen
Bei einer Batch-Integrationsberechnung wird in der Regel auf einen gesamten Datensatz, z. B. eine Tabelle oder eine Sammlung, zugegriffen, um die Daten umzuwandeln oder eine analytische Abfrage durchzuführen. Das heißt, die Daten, die in die Batch-Berechnung eingegeben werden, sind vollständig in einer Datenbank oder einer anderen Speicherplattform wie HDFS verfügbar. Zu den Datentransformationen gehören das Filtern von Daten, das Durchführen von Datenqualitätsoperationen oder das Erweitern und Anreichern von Daten mit zusätzlichen externen Daten. Es ist wichtig zu verstehen, dass einige Batch-Berechnungen auf jedem Datenelement (Zeile oder Dokument) unabhängig von allen anderen Datenelementen arbeiten können. Dies gilt für Filterungen und einfache Transformationen. Bei einigen Berechnungen bestehen jedoch Abhängigkeiten zwischen den Datenelementen. Dies trifft auf analytische Abfragen zu, die eine Aggregation, Sortierung oder Verknüpfung von Datensätzen beinhalten. Schließlich erfordern einige Batch-Berechnungen mehrere Iterationen über einen Datensatz. Dies gilt für Algorithmen zum maschinellen Lernen und bestimmte Arten von Graphenberechnungen (z. B. der PageRank-Algorithmus).
Eine Schlüsselkomponente moderner Datenverarbeitungs-Engines ist die Fähigkeit, Ausfälle während einer potenziell langen Berechnung zu tolerieren. Dies gilt insbesondere dann, wenn Ihre Berechnung auf Hunderten bis Tausenden von Standard-Rechenknoten ausgeführt wird. Google MapReduce war die erste groß angelegte Datenverarbeitungsmaschine, die ein Programmiermodell bereitstellte, das es dem Programmierer ermöglicht, sich auf die Berechnung zu konzentrieren und die Komplexität der Verwaltung der Fehlertoleranz auszublenden. Die MapReduce-Laufzeit-Engine stellt sicher, dass eine MapReduce-Berechnung auch bei Netzwerk- und Knotenausfällen abgeschlossen werden kann. MapReduce-Fehlertoleranz wird durch die erneute Ausführung von Map- oder Reduce-Aufgaben erreicht. Die MapReduce-Implementierung arbeitet eng mit dem zugrunde liegenden zuverlässigen verteilten Dateisystem (im Fall von Google GFS) zusammen, um Input für die erneute Ausführung von Aufgaben zu liefern. Hadoop MapReduce stützt sich auf HDFS und funktioniert ähnlich wie Google MapReduce. Benutzerorientierte Tools wie Pig und Hive führen Berechnungen letztlich als MapReduce-Aufgaben aus.
Wie MapReduce bietet Spark ein Programmiermodell und eine Laufzeit-Engine, die sicherstellen, dass die Spark-Berechnungen auch bei Clusterausfällen korrekt ausgeführt werden. Das Spark-Modell und die Spark-Implementierung, die auf belastbaren verteilten Datensätzen (RDDs) basieren, bieten eine andere Möglichkeit, verteilte Berechnungen zu formulieren, und können in vielen Fällen zu einer viel schnelleren Ausführung führen. Spark bietet im Vergleich zu MapReduce eine API auf höherer Ebene, und einzelne Operationen werden nachverfolgt. Diese Fähigkeit, den Verlauf von Operationen zu verfolgen, ermöglicht die erneute Ausführung und die Neuerstellung von RDDs im Falle eines Knotenausfalls. Im Gegensatz zu MapReduce verwischt Core Spark die Grenze zwischen Batch- und interaktiven Abfragen. Sobald Daten in eine oder mehrere Spark-RDDs in einem Cluster geladen wurden, können diese Daten schnell abgefragt werden, um verschiedene Ergebnisse zu ermitteln. Dadurch wird vermieden, dass dieselben Daten für unabhängige Abfragen erneut in den Speicher geladen werden. Wie MapReduce wird Spark jedoch häufig als schnellere Batch-Datenverarbeitungsmaschine verwendet. Wie MapReduce ist auch Spark auf ein zuverlässiges verteiltes Dateisystem wie HDFS oder einen zuverlässigen verteilten Datenspeicher wie Cassandra angewiesen.
Reine Batch-Berechnungen bilden den Kern der Unterstützung der Hauptgeschäftsbereiche, der Berichterstattung, der Prognosen und der wissenschaftlichen Berechnungen. Daher wird die stapelorientierte verteilte Datenverarbeitung in den meisten Unternehmen auch weiterhin eine wichtige Technologiekomponente sein.
Mein nächster Beitrag in dieser Serie wird sich mit folgenden Themen befassen Streaming-Berechnungen verstehen und schließe mit den Vorteilen einer Batch- und Streaming-Datenintegrationsplattform.