Community

Streaming Data Ingestion in Big-Data- und IoT-Anwendungen

: Guido Schmutz, Septembergast bei der JUGH, hat seinen Vortrag dem Thema Streaming Data Ingestion gewidmet.

Daten von mehreren Quellen zusammenführen, auf einer Plattform verfügbar und damit analysierbar zu machen – genau darum geht es bei vielen Anwendungsfällen im Bereich Big Data und IoT (Internet of Things). Streaming Data Ingestion kann dabei sehr hilfreich sein.

Die Datenquellen sind heterogen, von einfachen Dateien über Datenbanken bis zu hochvolumigen Ereignisströmen von Sensoren (IoT-Geräten). Für die Aufgabe der Data Ingestion haben sich mehrere Systeme etabliert. Diese sind vergleichbar mit den von Unternehmen bereits eingesetzten Enterprise-Service-Bus-Infrastrukturen, bringen jedoch Besonderheiten mit sich, welche diese Produkte besonders interessant machen. Sie können z. B. zu jeder einzelnen Nachricht detaillierte Informationen liefern, auch wenn die Nachricht als solche bereits verarbeitet wurde. Sie harmonieren sehr gut mit dem Hadoop-Ökosystem und können mit modernen Formaten wie Avro umgehen. Der Betrieb kann auf verschiedenen Plattformen erfolgen, wodurch eine Anwendung direkt lokal bei den Datenquellen möglich ist.

Bündelung von Datenströmen und Latenz

Heutige Quellen liefern eine Vielzahl an Datenströmen, meist jedoch ohne jeglichen Zwischenspeicher. Besonders im IoT-Bereich sind die Geräte meist sehr kompakt konstruiert und auf Energieeffizienz getrimmt, so dass eine Speicherung von Daten nicht möglich ist. Aus diesem Grund ist für die weitere Verarbeitung der Daten ein so genanntes Event Hub oder ein Buffer erforderlich, welcher die Datenströme verschiedenster Quellen bündelt und sammelt. Von hier aus können die Daten in definierbaren Taktungen abgeholt werden. Dabei kommen Produkte wie Apache NiFi, StreamSets und das Kafka-Ökosystem ins Spiel.

Die Latenz ist jedoch trotz der Bündelung durch ein Event Hub wie Kafka recht hoch, da die Verarbeitung der Daten nach wie vor auf der Big-Data-Plattform stattfindet, bevor die Daten genutzt werden können. Außerdem ist fraglich, ob ein IoT-Device überhaupt direkt mit Kafka sprechen kann (bspw. auf Protokoll- und Sicherheitsebene). Zudem kann es wünschenswert sein, ein Pattern Matching auf Events zu implementieren: Sobald Event A eintritt, muss innerhalb von X Sekunden Event B eintreten, damit es nicht zu Fehlern kommt.

Wie kann Latenz umgangen werden ohne Datenströme außer Acht zu lassen?

Eine Stream-Analytics-Plattform kann hier die Lösung bieten. Denn mithilfe dieser findet eine direkte Analyse der Datenströme statt. Darüber hinaus besteht die Möglichkeit, ein direktes Feedback in Form von einem neuen Event Stream an das Event Hub zurück zu übermitteln.

Sind trotz des Ziels, eine geringe Latenz zu erreichen, die Rohdaten von Interesse (beispielsweise für Predictive Maintenance oder Machine Learning), so lässt sich neben dem Event Hub ein klassisches Big Data Cluster als zweiter Abnehmer der gesammelten Daten integrieren. Somit besteht die Möglichkeit, zum einen eine direkte Verarbeitung der Events durchzuführen sowie zum anderen eine Verarbeitung der Rohdaten zu gewährleisten.

Mit Change Data Capture ist mehr Flexibilität möglich

Eine Herausforderung im IoT-Bereich stellt das kurzfristige Erweitern von Event-Quellen dar. Wenn beispielsweise ein neues IoT-Gerät in die bestehende Systemlandschaft integriert und in Betrieb genommen wird, beginnt dieses unmittelbar mit der Bereitstellung von Datenströmen, auch wenn die zugrunde liegende Datenbank das neue Gerät noch gar nicht kennt. Ein Matching der Daten aus der Datenbank und dem Event Hub hat also auf dem Data Lake noch nicht stattgefunden. Hier ist es sinnvoll, Change Data Capture einzusetzen, um eine direkte Kommunikation zwischen der Datenbank und dem Event Hub zu ermöglichen. Dadurch kann ein andernfalls anzunehmender Zeitversatz durch Datenbank-Imports an das Big-Data-System umgangen werden.

Abgrenzung der Begriffe Stream Data Integration* und Stream Analytics

Die Begrifflichkeiten Stream Data Integration und Stream Analytics sollten voneinander abgegrenzt werden. Wo Stream Analytics direkte Analysen auf einem Event fährt, geht es bei Stream Data Integration mehr um die Entgegennahme und Weitergabe von Datenströmen. Egal ob Pattern Matching, also die Betrachtung von bestimmten Zeitfenstern im Bezug auf Events, oder die Zusammenführung von Event Streams – Spark Streaming, Kafka Streaming oder Flink Streaming sind hier im Bereich Stream Analytics die richtigen Tools.

Gerade in komplexeren Architekturen ist im Rahmen der Stream Data Ingestion oftmals eine reine Weiterleitung von Events gewünscht, ohne dass eine unmittelbare Analyse gewünscht ist. Hierfür eignen sich insbesondere die Produkte NiFi, StreamSets und Kafka Connect.

Wer sich über deren konkrete Eigenschaften, Funktionsweisen und Unterschiede informieren möchte, sei auf den Vortrag von Guido Schmutz selbst verwiesen, der sie alle im Detail vorstellt.

*Zur begrifflichen Unterscheidung von Data Ingestion und Data Integration siehe Minute 40 des Videos.

(fr)

Sebastian Hardt