Streaming Daten: Einführung und Überblick wichtiger Frameworks

Streaming Daten sind Daten, die mit einem Streaming Framework in “Echtzeit” verarbeitet werden. Der Unterschied zum reinen Message Processing ist, dass du komplexe Operationen (Aggregationen, Joins etc.) auf den Datenströmen anwenden kannst.

Streaming Daten sind im Big Data Umfeld ein interessantes Entwicklungsfeld, was sich rapide weiterentwickelt und in vielen Use Cases einen Mehrwert bringt.

In diesem Artikel gebe ich einen tiefen Einblick in die grundlegenden Aspekte, die für Streaming Daten relevant sind und gehe auf die bekanntesten Streaming Daten Frameworks ein.

Was sind Streaming Daten?

Streaming Daten sind Daten, die ununterbrochen von Quellsystemen generiert und in kleinen Paketen verschickt werden. Ein Big Data Streaming Framework nimmt diesen Stream entgegen und verarbeitet die Informationen im Arbeitsspeicher, bevor diese dann auf eine Fettplatte geschrieben werden.

“a type of data processing engine that is designed with infinite data sets in mind. Nothing more.”

Tyler Akidau Software Engineer at Google

Streaming Daten können aus verschiedensten Systemen kommen: Log-Daten aus einem ERP-Sytsem, E-Commerce Events (Views, Orders, Baskets), Tracking-Events auf Mobile Apps, Geolocations aus Webanwendungen, Geschäftsvorfälle aus Kundencentern oder Nutzungsdaten von bestimmten Produkten.

All diese Informationen können mit Streaming-Daten schneller bereitgestellt und verarbeitet werden.


Arten von Streaming Daten

Grundsätzlich lassen sich Streaming Daten in zwei verschiedene Streaming Arten unterscheiden: Natives Streaming (native streaming) und Micro-Batching . Folgend gehe ich auf die Unterschiede dieser zwei Arten ein.

Natives Streaming

Beim nativen Streaming wird jeder ankommende Datensatz von der Streaming Engine sofort verarbeitet, ohne auf andere Datensätze zu warten (Einzelsatzverarbeitung). Natives Streaming reagiert schneller auf einkommende Datensätze, was für eine geringere Latenz und mehr Durchsatz führt.

Native Streaming - Streaming Daten werden im Einzelsatz verarbeitet

Native Streaming Frameworks: Apache Storm, Apache Flink, Kafka Streams, Samza (und Spark Continuous Processing Experimental Release in Apache Spark 2.3.0)

Micro-Batching

Bedeutet, dass alle paar Millisekunden/Sekunden ein Batch ausgeführt wird. Dadurch entsteht ein kleiner Zeitverzug.

Streaming im Micro Batch - Streaming Daten werden in kleinen Batches verarbeitet

Frameworks: Apache Spark, Apache Storm Trident

Native Streaming vs. Micro Batching

Beide Typen haben Vor- und Nachteile. Natives Streaming hat den Vorteil, dass es sehr geringe Latenzen erreichen kann. Gleichzeitig bedeutet dies, dass es schwer ist eine hohe Fehlertoleranz zu erreichen, ohne dabei auch den Durchsatz zu mindern (Checkpoints müssen geschrieben werden etc.). Zustandsmanagement hingegen ist bei nativen Streaming einfach.

Micro-Batching, verarbeitet die Daten in kleinen Batches und hat den Vorteil das die Fehlertoleranz dadurch gegeben ist. Auch der Durchsatz ist per se nicht schlecht. Effizientes Zustandsmanagement ist eine Herausforderung für die Entwickler.

Native Streaming
Micro-Batching
Datensätze werden bei Ankunft verarbeitet
geringerer Durchsatz
+ geringe Latenz
Fehlertoleranz ist ressourcenintensiv
Datensätze werden in kleinen Batches verarbeitet
+ höherer Durchsatz
höhere Latenz
+ einfachere Fehlertoleranz

Wichtige Aspekte bei Streaming Data

Um die Big Data Streaming Frameworks mit den einzelnen Stärken und Schwächen zu verstehen, ist es wichtig, dass wir kurz über die unterschiedlichen Aspekte von Streaming Daten und Probleme, die in der Streamverarbeitung auftreten reden.

  • Fehlertoleranz: Im Falle eines Fehlers, wie bspw. Node-Fehler, Netzwerkprobleme, sollte das Framework in der Lage sein den Prozess neu zu starten und ab dem Punkt starten, wo der Prozess gestoppt wurde. Das kann durch so genannte Checkpoints erreicht werden, hier werden Metadaten zu den verarbeiteten Daten geschrieben. So wird das Offset ab dem Checkpoint wieder geladen.
  • State Management: Beim Zustandsmangement wird ein Zustand gespeichert (bspw. Counts über verschiedene Schlüssel in einer bestimmten Zeitspanne), hier sollte das Framework in der Lage sein den Zustand zu halten und ein Update durchzuführen.
  • Garantierte Verarbeitung: Es gibt grundsätzlich 3 unterschiedliche Arten von Stream Verarbeitung:
    • Bei Atleast-once wird der Datensatz auf jeden Fall einmal verarbeitet – auch bei Cluster-Fehlern.
    • Atmost-once kann die Verarbeitung nicht garantieren.
    • Bei Exactly-once wird die einmalige Verarbeitung garantiert und ist somit die präferierte Variante. Oft leidet die Performance unter diesem Ziel.
  • Geschwindigkeit: Beschreibt die Latenz, mit der ein Datensatz verarbeitet wird (Zeilen pro Sekunde) und die Möglichkeit der Skalierung bei mehr Last. Die Latenz sollte so gering wie möglich und der Durchsatz so hoch wie möglich sein. Beide zu erreichen sind oft schwer, daher geht es um eine gute Balance.
  • Entwicklungsstand-/Marktreife: Im Streamingmarkt gibt es viele „neue“ Player, die verschiedene Ansätze verfolgen. Wichtig ist es bei der Auswahl, auf ein Framework zu setzten, welches bei großen Unternehmen erfolgreich in Produktion implementiert wurde. Auch eine große Community hilft dabei das Framework weiterzuentwickeln und ggf. Hilfe aus der Community zu bekommen.
  • Weitere Features: Um komplexe Logik auf Streams abzubilden, brauchst du bestimmte Funktionen:
    • Event Time Processing bezeichnet die Verarbeitung basierend auf der Eventerzeugungszeit. Manche Streaming Frameworks beiten diese Funktion nicht an und verarbeiten nach Ankunftszeitpunkt.
    • Zeitfenster Funktionen (Windowing) sind Aggregationen über ein bestimmtes Zeitfenster (bspw. sum(revenue) in last 4h)
    • Anwendung von analytischen Modellen im Stream. Natürlich bieten einige Streaming Frameworks auch die Möglichkeit der Anwendung eines Machine Learning Modells im Stream.

Streaming Data Frameworks im Vergleich

FrameworkVorteileNachteile
Apache Storm
(Native Streaming)
– Natives Streaming
– geringe Latenz
– hoher Durchsatz
– gut für nicht komplexe Streaming Use Cases

– Keinen impliziten Support für Zustandsmanagment
– keine Feature für Aggregationen, Windows etc.
– Verarbeitung nur Atleast-once
Apache Spark Structured Streaming
(Micro-batching)
– Unterstützt Lambda-Architektur
– hoher Durchsatz
– hohe Fehlertoleranz
– einfaches API
– große Community
– Verarbeitung Exactly Once
– Kein nativer Stream
– viele Parameter zum Tunen von Streams
– Stateless
– ist hinter Flink in Bezug auf Advances Features
Apache Spark Continuous Processing
(Native Streaming)
 – Unterstützt Lambda-Architektur
– hoher Durchsatz
– hohe Fehlertoleranz
– einfaches API
– große Community
– Verarbeitung Exactly Once
– Weniger Funktionen verfügbar (groupBy etc.)
– stark in den Anfängen
Apache Flink
(Native Streaming)
– Unterstützt Lambda
– Führer in Streaming Umfeld
– geringe Latenz und hoher Durchsatz
– nicht zu viele Parameter (Auto-adjusting)
– Verarbeitung Exactly Once
– Späte Entwicklung daher Nachteil im Markt
– kleinere Community als Spark
– keine Adaption für Batch Modus
Kafka Streams
(Native Streaming)
– Kleine einfache API daher gut für Microservices
– gute für IoT
– Exactly Once
– braucht kein dediziertes Cluster
– Sehr nah an Kafka (ohne geht’s nicht)
– muss sich noch beweisen
– keine riesen Prozesse möglich = eher einfache Logik
Samza
(Native Streaming)
– Einfaches API
– Gut darin große Zustände von Streams zu speichern (gut für Joins von Streams)
– hohe Fehlertoleranz
– hoch performant
– Starke Verbundenheit zu Kafka und Yarn
– Atleast-once processing
– wenig erweiterte Streaming Funktionen(Watermarks, Triggers, Sessions)

Streaming Daten Use Cases im Marketing

Streaming Daten sind noch ein sehr neues Thema, was sich im Moment stark weiterentwickelt. Für viele Unternehmen sind Use Cases mit Streaming Daten noch Ideen oder Uses Cases, die in kleinen Proof of Conept Projekten erprobt werden. Zunehmender Einsatz von Big Data Plattformen, fördert das Thema allerdings stark und viele Unternehmen zeigen Interesse.

Besonders im Marketing sind die Uses Cases nicht so offensichtlich wie im IoT Bereich, aber auch im Marketing gibt es interessante Use Cases:

  • Personalisierung E-Commerce Checkout: Um die richtige Empfehlung im Checkout Prozess anbieten zu können, braucht man  die neusten Daten in Real Time. Dazu zählt die Klickhistorie aus der aktuellen Session, der aktuelle Warenkorb und gespeicherte Interaktionen aus einer längeren Historie. Um hier die richtige Empfehlung abzugeben braucht das Machine Learning Modell die Daten im Moment des Checkouts, so können die wichtigen Sessioninformationen einen UpLift bringen.
  • Streaming ETL: Oft ist die Nacht zu kurz für die bestehenden ETL-Strecken. Auch hier können interessante Use Cases mit Streaming Daten umgesetzt werden. Die Daten können sofort mit Big Data Streaming Frameworks verarbeitet, wertvolle Zeit gespart und Entscheidungen schneller getroffen werden. Hier ist ein interessantes Video zu Streaming-ETL.
  • Trigger Marketing Kampagnen: Die Informationen schnell zu verarbeiten ist ein Wettbewerbsvorteil. Mit Data Streaming können bestimmte Kundenevents in Echtzeit berarbeitet werden und somit den Kunden anlassbezogen über ein Event ansprechen, anstatt in einer Massenkampagne.

Streaming Analytics

Streaming Analytics stellt Machine Learning Modelle im Stream bereit, so dass ein Modell Scoring auf die gerade eintreffenden Streaming Daten durchgeführt wird.

Für komplexe Architekturen und Use Cases werden dann oft Machine Learning Features für jeden Kunden vorberechnet und in einem Feature Store gespeichert. Bei einem eintreffenden Datensatz, wird dann Profil in Echtzeit abgefragt und mit dem Stream gejoined. Durch die weiteren Informationen, die man bspw. zu einem Kunden hat, kann das Modell mit historischen Daten angereichert und angewendet werden.

Streaming Analytics wird im Marketing vor allem im Bereich der Personalisierung von Diensten und Online Shops eingesetzt. Jede neue Interaktion führt zu einem neuen Ergebnis im Recommender System und damit zu veränderten Empfehlungen.


Weitere interessante Artikel:

Ihr Ansprechparnter: Laurenz Wuttke

Wir entwickeln Künstliche Intelligenz, mit der Sie mehr aus Ihren Kundendaten machen – für wachsende Umsätze und eine nachhaltig hohe Kundenzufriedenheit.

Auch interessant für Sie