Lambda-Architektur

Lambda-Architektur kombiniert Batch- und Stream-basierte Datenverarbeitung, um eine niedrige Latenz und genaue Sicht auf zeitbasierte Betriebsdaten zu ermöglichen.
Ursprung von Lambda-Architektur
2011 stellte Nathan Marz in seinem Blog die Idee der Lambda-Architektur vor, um die mit MapReduce verbundenen Latenzen zu reduzieren. Das ursprüngliche Konzept wurde ausgeweitet auf Big Data in dem Papier von Nathan und James Warren, Big Data: Principles and Best Practices of skalierbar Realtime Data Systems, veröffentlicht im Jahr 2013. 2014 schrieb Jay Kreps in Rader einen Artikel mit dem Titel Questioning the Lambda-Architektur , in dem er auf einige Nachteile hinwies, die er bei LinkedIn entdeckt hatte, und Alternativen vorschlug. Jay schlug die einfachere Kappa-Architektur vor, weil sie nur einen Streaming verwendet.
Warum ist Lambda-Architektur wichtig?
Bei einem reinen Stapelverarbeitungsansatz zum Abrufen von Daten muss man warten, bis ein Stapel abgeschlossen ist, bevor die abgerufenen Daten abgefragt werden können. Die Stapelverarbeitung hat den Nutzen , dass sie ressourcenschonend ist und einen hohen Durchsatz bietet.
Die Stream-Verarbeitung ist weniger effizient als die Stapelverarbeitung, bietet aber geringere Latenzzeiten, da die Datensätze sofort nach ihrer Erstellung abgerufen werden. Lambda-Architektur bietet die Unmittelbarkeit von Stream-Daten mit dem Durchsatz von Stapelverarbeitung und fügt eine Ebene der Fehlertoleranz hinzu, indem ein einzelner Punkt des Übertragungsfehlers entfernt wird. Die Quelldaten werden nicht verändert, so dass sie weiterhin verbindlich sind.
Die Bestandteile einer Lambda-Architektur
Nachfolgend finden Sie eine Übersicht über die Hauptkomponenten der Lambda-Architektur.
Die Quelldaten
Die Rohdatenquelle wird nicht verändert. Transformationen werden auf eine Kopie des Originals angewendet, um die Überprüfbarkeit zu gewährleisten. Die Batch- und Streaming verwenden denselben Datensatz.
Die Batch-Ebene
Die Batch-Schicht erzeugt Ansichten, während sie einen kompletten Datensatz transformiert. Diese Ansichten können im Falle von Fehlern oder Codeänderungen neu berechnet werden.
Die Geschwindigkeitsebene
Die Geschwindigkeitsebene nutzt die Stream-Verarbeitung, um die zeitlichen Lücken zu füllen, während eine Stapelaktualisierung läuft. Wenn der nächste Stapel abgeschlossen ist, können die vergangenen Daten gelöscht werden. Im Falle eines Ausfalls kann der gesamte Datensatz gestreamt werden, um die Datenverfügbarkeit zu erhöhen.
Die Servierschicht
Bei der Serving-Schicht handelt es sich in der Regel um eine Datenbank, die Join-Abfragen über die Batch- und die gestreamten Ausgabetabellen unterstützt, um eine einzige kohärente Ansicht des transformierten Datensatz zu liefern. Die Architektur schreibt keine bestimmte Datenbank- oder Dateisystemtechnologie vor, solange sie auf transparente Weise einen einheitlichen Ergebnissatz unterstützt, der sowohl auf die gestreamten als auch auf die im Batch-Verfahren erstellten Tabellen verweist.
Die Vorteile der Lambda-Architektur
Zu den wichtigsten Vorteilen der Lambda-Architektur gehören:
- Der Nutzer sieht immer einen vollständigen und transformierten Datensatz.
- Die Quelldaten sind unveränderlich, so dass die Ergebnismengen immer aus der Quelle neu erstellt werden können.
- Keine Verzögerungen bei Aufzeichnungen, im Gegensatz zu einem reinen Batch-Ansatz.
- Zwischenergebnisse können gespeichert werden, was das Debuggen von Code, der diese als Protokoll verwendet, erleichtert.
- Die Verwendung von zwei Pfaden zum Abrufen der Rohdaten schafft eine hohe Verfügbarkeit, da entweder der Batch- oder der Streaming-Pfad bei Bedarf einen vollständigen Datensatz erstellen kann.
Die Kehrseite der Lambda-Architektur
Das Hauptproblem der Lambda-Architektur ist die Komplexität. Zwei verschiedene Mechanismen, jeder mit seiner eigenen Codebasis, bewegen Daten von einer Quelle zu einem Ziel, das Abfragen unterstützt. Eine Tabelle ist für Stapeldaten bestimmt, die andere für gedämpfte Daten. Abfragen müssen diese Tabellen verbinden, wobei Duplikate herausgefiltert werden, was sie langsamer macht. Die Batch- und Streaming müssen alle Datentransformationen durchführen.
Actian und Lambda-Architektur
Die Actian Data Platform kann Lambda-Architektur Funktionen mit einer Kombination von gestreamten und batch-basierten Pipelines aus dem Datensatz bereitstellen. Die eingebaute Vector-Spalten-Datenbank enthält Speicher für die gestreamten und die per Batch geladenen Tabellen, die mit Hilfe von SQL-Joins (Structured Anfrage Language) abgefragt werden können, um eine Ansicht der eindeutigen Datensätze aus beiden Tabellen zu erhalten. Das Schöne an dem Actian-Ansatz ist, dass sowohl die Batch- als auch die Streaming-Daten denselben Transformationscode verwenden, um konsistente Ergebnisse zu gewährleisten.