Suchen

IoT-Frameworks

Was ist und wie funktioniert Stream Processing?

| Redakteur: Jürgen Schreier

Der neue Mobilfunkstandard 5G gilt als Hoffnungsträger, wird aber für kommerziell erfolgreiche IoT-Projekte kaum ausreichen. Schließlich geht es dabei nicht nur um Bandbreite. Eine Wertschöpfung mit IoT-Daten lässt sich nur dann realisieren, wenn auch deren Auswertung nahezu in Echtzeit möglich ist. Genau das ermöglicht Stream Processing.

Firmen zum Thema

Mittels Stream Processing durch Apache Flink können Daten unmittelbar „in Bewegung“ nahezu in Echtzeit verarbeitet werden.
Mittels Stream Processing durch Apache Flink können Daten unmittelbar „in Bewegung“ nahezu in Echtzeit verarbeitet werden.
(Bild: Pixabay / CC0)

Unternehmen erzeugen kontinuierlich immer größere Datenmengen, insbesondere Sensordaten der vernetzten Industrie 4.0. An dieser Stelle kommt Stream Processing ins Spiel, eine Big-Data-Technologie, die für einen neuen Ansatz in der Datenverarbeitung steht. Dieser unterscheidet sich fundamental von dem bisher verwendeten Batch-Processing, also der Stapelverarbeitung.

Datenströme werden kontinuierlich analysiert

„Während herkömmliche Datenbanken die Daten zunächst abspeichern müssen, um sie zu verarbeiten, ist dies mit dem heutigen Datenvolumen und der erwarteten Geschwindigkeit oft gar nicht möglich“, erklärt Aljoscha Krettek, Software Engineer bei Ververica (ehemals data Artisans). „Mittels Stream Processing durch Apache Flink, können die Daten jedoch unmittelbar „in Bewegung“ als Datenstrom nahezu in Echtzeit verarbeitet werden.“ Auf diese Weise ist die Bewältigung kontinuierlich zufließender Datenströme – etwa von Finanztransaktionen, beim E-Commerce, aber auch von IoT-Sensoren – möglich. Dies wiederum ist die Voraussetzung, damit Unternehmen unmittelbar auf Ereignisse reagieren können.

Aljoscha Krettek, Software-Engineer bei Ververica: „Die Verarbeitung von Echtzeit-Datenströmen anstelle von periodisch übertragenen Datensätzen ermöglicht es, Berechnungen sofort bei der Verfügbarkeit von Daten durchzuführen, zeitnahe Warnungen auszulösen oder Ereignismuster kontinuierlich zu erkennen.“
Aljoscha Krettek, Software-Engineer bei Ververica: „Die Verarbeitung von Echtzeit-Datenströmen anstelle von periodisch übertragenen Datensätzen ermöglicht es, Berechnungen sofort bei der Verfügbarkeit von Daten durchzuführen, zeitnahe Warnungen auszulösen oder Ereignismuster kontinuierlich zu erkennen.“
(Bild: Ververica)

Vor der Stream-Verarbeitung wurden solche Daten oft in einer Datenbank oder einem Dateisystem gespeichert. Anwendungen fragten die Daten ab und nutzten diese für Berechnungen. Das Stream Processing dreht dieses Paradigma um: Die Anwendungslogik, die Analytik und die Abfragen sind ständig vorhanden, während die Daten kontinuierlich durch sie hindurch fließen.

Beim Empfangen eines Ereignisses aus dem Stream reagiert eine Anwendung auf dieses Ereignis: Sie kann eine Aktion auslösen, ein Aggregat oder eine andere Statistik aktualisieren oder sich dieses Ereignisses als zukünftige Referenz "merken". Streaming-Berechnungen können auch mehrere Datenströme gemeinsam verarbeiten. Jede Berechnung über den Ereignisdatenstrom kann wiederum andere Ereignisdatenströme erzeugen.

Bildergalerie

Die Systeme, die die Datenströme empfangen und senden und die Anwendungs- oder Analyselogik ausführen, werden als Stream-Prozessoren bezeichnet. Die Hauptaufgabe eines Streamprozessors besteht darin, sicherzustellen, dass der Datenfluss und die Berechnungsskalen effizient und fehlertolerant sind. Apache Flink ist ein leistungsfähiges, ausgereiftes Open-Source-Stream-Verarbeitungs-Framework, das diese Herausforderungen löst.

Über Apache Flink

Apache Flink wird von Entwicklern zur Analyse und Verarbeitung von Datenströmen mit sehr hohem Volumen verwendet. Durch den Einsatz von Flink und einer Daten-Streaming-Architektur können Unternehmen innerhalb von Millisekunden auf Erkenntnisse aus Daten reagieren und bestehende historische Datenverarbeitungsanforderungen innerhalb einer einzigen Plattform abdecken. Flink wird von der dynamischen und wachsenden Open-Source-Community der Apache Software Foundation entwickelt und unterstützt, in der mehr als 360 Teilnehmer weltweit aktiv sind.

Zustandsbezogenes Stream Processing

Stateful Stream Processing, die zustandsbezogene Stream-Verarbeitung, ist eine Teilmenge des Stream Processing, bei der die Berechnung den Kontextzustand beibehält. Dieser Zustand wird verwendet, um Informationen zu speichern, die aus den zuvor "gesichteten" Ereignissen abgeleitet wurden. Praktisch alle nicht-trivialen Stream-Processing-Anwendungen erfordern eine zustandsbezogene Stream-Verarbeitung:

  • Eine Anwendung zur Betrugsprävention würde die letzten Transaktionen für jede Kreditkarte im Kontextzustand behalten. Jede neue Transaktion wird mit all jenen im Kontextzustand verglichen, die als gültig oder betrügerisch gekennzeichnet sind. Dieser Zustand wird mit dieser Transaktion aktualisiert.
  • Eine Online-Empfehlungssystem würde Parameter speichern, die die Einstellungen des Benutzers beschreiben. Jede Produktinteraktion erzeugt ein Ereignis, das diese Parameter aktualisiert.
  • Ein Microservice, der eine Song-Playlist oder den "Einkaufswagen" eines Online-Shops verwaltet, empfängt Ereignisse für jede Benutzerinteraktion mit Songs oder Produkten. Der Staat führt die Liste aller hinzugefügten Elemente.

Die tiefe Integration zwischen dem Zustand und der Ausführung der Anwendungs-/Analyselogik resultiert in einer sehr hohen Leistung, Skalierbarkeit, Datenkonsistenz und Bedienerfreundlichkeit.

Stream Processing vereinheitlicht Anwendungen und Analysen. Entwickler können auf einfache Weise Anwendungen erstellen, die analytische Ergebnisse nutzen, um auf Erkenntnisse aus den Daten zu reagieren und direkt zu handeln. Typische Beispiele wären:

  • Klassifizierung eines Bankgeschäfts als betrügerisch auf der Basis eines analytischen Modells, wobei die Ausführung der Transaktion automatisch blockiert wird.
  • Senden von Push-Benachrichtigungen an Benutzer basierend auf Modellen über deren Verhalten.
  • Anpassung der Parameter einer Maschine basierend auf dem Ergebnis einer Echtzeitanalyse der Sensordaten dieser Maschine.

Freeport Metrics hat an mehreren Data-Streaming-Projekten in der IoT-Branche gearbeitet und hierbei Apache Flink als zugrundeliegendes Event Stream-Processing-Framework genutzt. Jakub Piasecki, Director of Technology bei Freeport Metrics, nennt sieben Gründe, warum seiner Meinung nach Stream Processing mit Apache Flink im Internet der Dinge zukünftig ein Muss ist:

1. Echtzeit-Datenverarbeitung ist ein entscheidender Faktor

Die IoT-Industrie verlangt sofortige Informationen und Maßnahmen bei jeder Aktivität. Stelle man sich zum Beispiel eine Situation vor, in der es draußen windig ist, aber die Windturbine keine Energie produziert. Der Energieversorger muss diese Information sofort bekommen, um sie in Echtzeit auszuwerten und Aktionen Anhand von Algorithmen unmittelbar auslösen zu können.

Der Betrieb mit Echtzeit-Datenströmen anstelle von periodisch übertragenen Datensätzen verändert das Programmierparadigma dabei grundlegend und ermöglicht es, Berechnungen sofort bei Verfügbarkeit von Daten auszulösen, zeitnahe Warnungen auszulösen oder Ereignismuster kontinuierlich zu erkennen.

Darüber hinaus kann die Verarbeitung der erzeugten Daten in einigen Fällen optimal für die Performance sein. So sind beispielsweise keine Berechnungen erforderlich, wenn kein neues Ereignis eingetreten ist, was bedeutet, dass nicht der gesamte Datensatz regelmäßig neu berechnet werden muss, um neue Ergebnisse zu erhalten.

2. Die Ereigniszeit ist entscheidend bei der Datenbestellung in der IoT-Industrie

Wenn Daten von Geräten durch ein Mobilfunknetz übertragen werden, ist es wichtig, Latenzzeiten und Netzwerkausfälle zu berücksichtigen. Selbst wenn über eine stabilere Verbindung gesendet wird, lassen sich die Gesetze der Physik nicht umgehen, und die Entfernung der IoT-Geräte vom Rechenzentrum erhöht zwangsläufig die Latenzzeit.

Als Beispiel stelle man sich Maschinen- oder Automobilteile vor, die sich durch eine Produktionslinie mit daran angeschlossenen Sensoren bewegen. Es gibt keine Garantie dafür, dass die Messwerte dieser Sensoren in der Reihenfolge ihrer Erfassung über das Netzwerk ankommen.

Meistens ist es beim Umgang mit Daten von IoT-Geräten sinnvoll, bestellte Ereignisse nach dem Zeitpunkt ihres Auftretens (Ereigniszeit) und nicht nach dem Zeitpunkt ihrer Ankunft im Rechenzentrum oder nach der Verarbeitung (Aufnahme- bzw. Verarbeitungszeit) zu

verarbeiten. Aus diesem Grund ist die Unterstützung der Ereigniszeit ein Muss bei der Auswahl eines Datenverarbeitungs-Frameworks.

3. Werkzeuge für den Umgang mit unordentlichen Daten

Die Datenvorverarbeitung am Edge ist in der Regel der härteste Teil des Prozesses. Es ist noch schwieriger, wenn man die Quelle nicht vollständig kontrolliert, wie es in der IoT-Welt oft der Fall ist. Dies kann in einen erheblichen Anteil an Reinigungscode mit komplexer Logik resultieren.

Die Event Stream-Verarbeitung bietet einige nützliche Tools. Eines der nützlichsten Werkzeuge ist das Windowing, ein Konzept, bei dem die Elemente eines unbegrenzten Stroms für die weitere Verarbeitung in endliche Mengen gruppiert werden, basierend auf Dimensionen wie Zeit oder Elementanzahl.

Allerdings ist es manchmal nicht einfach möglich zu sagen, ob alle Daten angekommen sind. In diesem Fall würde man ein Fenster entsprechend einem heuristischen Watermark auslösen, das empirisch berechnet werden kann oder von einem abgelaufenen Timeout ausgehen. Apache Flink ermöglicht es auch, die zulässige Verspätung von Elementen festzulegen und stellt Seitenausgänge zur Verfügung, um später auftretende Ereignisse zu behandeln.

4. Segmentierung ermöglicht Parallelverarbeitung

Häufig sind verschiedene Benutzer eines IoT-Systems an Berechnungen interessiert, die nur an einer Teilmenge von Daten durchgeführt werden. Man denke an eine Plattform, die es Katzenbesitzern ermöglicht, zu sehen, wo ihre Haustiere gerade unterwegs sind. Jeder Besitzer benötigt nur Daten vom GPS-Tracker seiner eigenen Katze.

Apache Flink stellt zu diesem Zweck das Konzept der Gruppierung nach Schlüsselwerten vor. Sobald ein Stream partitioniert ist, kann er parallel verarbeitet werden, so dass Sie ihn horizontal vergrößern können. Natürlich muss ein Schlüsselwert nicht an ein einzelnes IoT-Gerät oder einen Standort gebunden sein. Im Falle des Flottenmanagements lassen sich beispielsweise verschiedene Signale, die sich auf ein einzelnes Fahrzeug beziehen, gruppieren (z.B. GPS, Hardwaresensoren, Kennzeichenerfassung etc.).

5. Der lokale Zustand ist entscheidend für die Performance

Während jeder Programmierer wissen sollte, dass sich die Latenzzahlen aufgrund von Fortschritten in Hardware und Infrastruktur jedes Jahr ändern, bleiben einige Grundregeln konstant:

  • Je näher die Daten liegen, desto schneller können sie bearbeitet werden.
  • Netzwerk-I/O ist nicht gut für die Performance.

Mit Apache Flink lassen sich Daten genau dort aufbewahren, wo Berechnungen mit dem lokalen Zustand durchgeführt werden. Noch wichtiger ist, dass der Zustand einer Anwendung durch einen effizienten Checkpointing-Mechanismus im Fehlerfall wieder konsistent hergestellt werden kann.

6. Flink ist ideal für Messaging

Wenn man an Event Streaming denkt, spielen sehr oft auch Messaging-Systeme wie Apache Kafka, AWS Kinesis oder RabbitMQ eine Rolle. Diese sind hoch skalierbar und zuverlässig für die Aufnahme großer Mengen von Ereignissen. Apache Flink bietet erstklassigen Support für alle drei Messagingsysteme, sowohl als Produzenten als auch als Konsumenten. Gleichzeitig unterstützt seine verteilte Architektur leistungssteigernde Funktionen wie Partitionierung oder Sharding. Die konsistente End-to-End-Verarbeitung wird auch von Flink auf diese Systeme ausgedehnt, wenn der Anwendungsfall es erfordert.

7. Event Stream Processing ist konzeptionell einfach

Wenn Unternehmen eine Event Streaming-Architektur für ihre IoT Anwendungen wählen, können sie sich meist nach einer sehr kurzen Eingewöhnungsphase, auf die Kernlogik Ihrer Anwendung konzentrieren. Der Großteil der „groben“ Arbeit wird vom Framework für sie erledigt.

„Die Verarbeitung von Echtzeit-Datenströmen anstelle von periodisch übertragenen Datensätzen ermöglicht es, Berechnungen sofort bei der Verfügbarkeit von Daten durchzuführen, zeitnahe Warnungen auszulösen oder Ereignismuster kontinuierlich zu erkennen“, erklärt Software-Architekt Aljoscha Krettek abschließend. „Mit dem Voranschreiten von Industrie 4.0, dem IIoT-Wachstum und dem parallelen Aufbau des 5G-Netzes dürfte Stream Processing auf Grundlage von Apache Flink weiter an Bedeutung gewinnen.“

Apache Flink Stream Processing wird mittlerweile von globalen Unternehmen wie Alibaba, ING, Netflix und Uber eingesetzt. Typische Anwendungsfälle sind Datenanalyse, maschinelles Lernen, Such- und Content-Ranking, sowie Betrugserkennung in Echtzeit. Der Medienriese Netflix verarbeitet mit Flink mehr als fünf Billionen Ereignisse pro Tag, also mehr als 50 Millionen pro Sekunde, auf Tausenden von Prozessorkernen. Ebenso wie bei diesen Anwendungsbeispielen aus der Praxis sind industrielle IoT-Anwendungen auf Echtzeitdaten angewiesen, um gegebenenfalls sofortige Maßnahmen einzuleiten. Ein Beispiel wäre das Management bei der Erzeugung regenerativer Energien je nach Wetterlage und Strombedarf.

Über Ververica

Ververica (vormals data Artisans) wurde von den Entwicklern von Open Source Apache Flink gegründet, um Echtzeit-Datenanwendungen für das Unternehmen bereitzustellen. Das Unternehmen stellt die Ververica- Platform mit Open Source Apache Flink für die schlüsselfertige Stream-Verarbeitung zur Verfügung, sodass Unternehmen Live-Datenanwendungen verwalten und bereitstellen können, damit sie sofort auf Daten reagieren und bessere und schnellere Geschäftsentscheidungen treffen können.

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 45816947)