Viele, schnelle Daten: Data Lakes und Lambda-Architektur

In Zeiten allgemeiner Vernetzung und dem Wunsch, die anfallenden Daten in vielfältiger Art und Weise nutzen zu können, besteht die Herausforderung, die Daten in einer modernen Umgebung zu sammeln und wieder bereitzustellen. Wie? Möglichst in einer flexiblen und skalierbaren Umgebung, denn die Anforderungen steigen in der Regel mit der Datenmenge. Und hier gilt: Sie kann sehr schnell wachsen und im Petabyte Bereich liegen. Daten haben dabei alle möglichen Formate und auch die zeitlichen Anforderungen nach Speicherung und dem Bereitstellen der Daten rangiert von klassischer Batchverarbeitung bis hin zu Echtzeitszenarien. Technisch werden solche Anforderungen oftmals mit Hadoop-basierten Data Lakes und einer darin integrierten Lambda-Architektur gelöst.

Schnelle und langsame Daten: Lambda-Architektur

Eine Lambda-Architektur ist eine Architektur zur Massenverarbeitung von Daten, deren Kern meist eine Datenhaltung in einem organisiertem Data Lake ist. Sie ist in der Lage, eine Echtzeitverarbeitung zu ermöglichen und bringt Durchsatz und Latenz der Daten in ein sinnvolles, den jeweiligen Anwendungsfällen angepasstes Verhältnis. Aufgebaut wird auf folgenden Ideen:

  • Daten werden fortgeschrieben
  • Veränderungen werden zu neuen Datensätzen. Diese haben zum Zeitpunkt der Veränderung Gültigkeit, die alten Daten verbleiben jedoch im Data Lake, was eine Historie über die Daten ermöglicht
  • Informationen ergeben sich aus den Aggregationen über die Daten im Data Lake
  • Es gibt eine Zugriffsschicht, die eine konsolidierte Sicht auf die Daten ermöglicht

Um zum Ziel zu kommen, wird technisch ein sogenannter Batch Layer für die Daten geringerer Geschwindigkeit und ein Speed Layer für die Daten höherer Geschwindigkeit aufgebaut. Bei letzterem führt in der Regel eine Kombination aus Messaging und Streaming in Verbindung mit einer schnellen NoSQL Datenbank zum Ziel. Typische Komponenten aus dem Hadoop Ökosystem sind hierbei Apache Storm, Kafka und Spark Streaming.

Eine Zugriffschicht dient dazu, die Daten in einer sinnvollen Art und Weise zusammenzuführen, gemeinsam auswertbar zu machen und den Konsumenten zur Verfügung zu stellen. Hier wird oftmals auch ein Zugriff über SQL ermöglicht, was wiederum den Einsatz von Hive und weiterer geeigneter SQL-on-Hadoop Varianten voraussetzt. Es ist auch die Stelle, an der ein geeignetes Governance Konzept zum Tragen kommen muss, was in natürlicher Weise zum Begriff des Data Lakes überleitet.

Organisation von Daten: Data Lake

Data Lakes sind eine moderne, einfach zu betreibende, hoch skalierbare und flexible Systeme für die Speicherung, Verarbeitung und Bereitstellung aller Arten von Daten. Sie bedienen in der Regel eine weite Bandbreite an analytischen Anwendungsfällen. Kernaufgabe des Data Lakes ist hierbei, die Daten aufzunehmen, sinnvoll abzulegen und wieder in einer geordneten Art und Weise zur Verfügung zu stellen. Da Hadoop-basierte Systeme (fast) linear und horizontal skalieren, kommen in der Regel auch Technologien aus dem Hadoop Umfeld ins Spiel,  da sie flexible und einfach skalierbare Umgebungen ermöglichen können.

Bei dem Aufbau von Data Lakes ist es besonders wichtig, auf eine sinnvolle und einfach gehaltene Organisation zu achten. Die Daten sollen ja „im See“ nicht untertauchen und verloren gehen. Ein organisierter Data Lake, auch Data Reservoir genannt, kann das gewährleisten. Hier werden typischerweise klare Prozesse und Regeln unter dem  Stichwort Sicherheit und Governance geschaffen. Genauso dient ein logisches Schichten- und Speicherkonzept, welches die Schichten der Lambda-Architektur reflektiert, dem Data Lake zu dem gewünschten Grad an Organisation und Transparenz.

Das Konzept eines Data Lakes überschneidet sich hier natürlich mit der Idee einer Lambda-Architektur. Im Grunde beleuchten beide ja auch nur verschiedene Aspekte einer Sache: Der Data Lake betrachtet das Ganze aus organisatorischer Sicht, die Lambda-Architektur aus der Sicht der unterschiedlichen Geschwindigkeitsanforderungen an die Daten.

Fazit

Wenn ich nun als Unternehmen die Anforderung habe, alle Daten, die in den Vertriebsprozessen meines Unternehmens anfallen, insbesondere auch die Interaktionen mit meinen Kunden über alle Kanäle hinweg zu sammeln und zu verarbeiten, bietet sich eine Umsetzung mit Hilfe von Data Lakes und einer Lambda-Architektur wie oben beschrieben förmlich an. Das gilt auch für die Echtzeitverarbeitung, die für Recommendation Engines besonders wichtig ist.

Der Aufbau von flexiblen und hoch skalierbaren Systemen, die in Lage sind, Daten in allen gewünschten Geschwindigkeiten aufzunehmen und bereitzustellen ist eben mit Lambda-Architekturen, die einen organisierten Data Lake zugrunde liegen haben, sinnvoll zu bewerkstelligen und wird in der Regel auch so umgesetzt. Data Lakes bedienen dabei den organisatorischen Aspekt einer sinnvollen Speicherung und Bereitstellung aller Arten von Daten, die Lambda Architektur ermöglicht es, „langsame“ Daten (Batch) und Echtzeitdaten zu verarbeiten und letztlich in der gewünschte Geschwindigkeit zur Verfügung zu stellen. Die Kombination beider Konzepte führt hierbei zum Erfolg.