Datenanalysen in Realtime
Daten in Echtzeit zu nutzen und zu analysieren wird für Unternehmen immer wichtiger. Doch welche Data-Stream-Processing-Lösung eignet sich für welchen Zweck? Wir haben vier Apache-Lösungen unter die Lupe genommen.
Welcher Data-Stream-Processing-Ansatz eignet sich für Echtzeitanalysen? Wir haben vier ApacheLösungen unter die Lupe genommen.
Unmittelbar auf Ereignisse und neue Daten reagieren zu können ist eine Domäne von Data Streaming, Stream Processing und Echtzeit-Datenanalysen. Obwohl aus Daten gewonnene Erkenntnisse generell nützlich sind, nimmt der Wert einiger dieser Insights mit der Zeit rasch ab. Daher gewinnt Realtime-Data-Streaming zunehmend an Bedeutung. Grundsätzlich gilt: Datenströme in Echtzeit zu verarbeiten bedeutet, große Mengen von Ereignissen – also Daten in Bewegung – effizient zu analysieren und damit innerhalb von Millisekunden wertvolle Einblicke für das eigene Geschäft zu gewinnen. In der klassischen Datenverarbeitung setzte man meist auf eine Batch-orientierte Dateninfrastruktur, um Daten zu verarbeiten und Analyseergebnisse zu liefern. Davon leiten sich die Begriffe Batchoder Stapelverarbeitung ab. Letztere erfordert verschiedene Programme zur Analyse der Eingangs- und Ausgangsdaten. Die Daten werden dabei zunächst gespeichert und zu einem späteren Zeitpunkt verarbeitet.
Batch-Verarbeitung dauert oft zu lange
Dafür reicht heute oft die Zeit nicht mehr. Unternehmen brauchen Echtzeitreaktion und -analyse. Dafür ist Stream-Verarbeitung – oder Datenstromverarbeitung – unerlässlich geworden. Diese Technologie verarbeitet kontinuierlich Daten in Bewegung und gibt Ergebnisse nahezu in Echtzeit aus. Die Stream-Verarbeitung speichert StreamingDaten fehlertolerant, ist skalierbar für große Rechner-Pools und zeichnet sich durch hohe Zuverlässigkeit aus. Somit lassen sich laufend Ereignisse (etwa Finanztransaktionen, Nutzerverhalten auf Websites, Daten von IoT-Sensoren) mit sehr geringer Verzögerung zuverlässig und unmittelbar verarbeiten. Heute profitieren moderne Unternehmen entscheidend davon, wenn sie in Echtzeit auf Ereignisse reagieren können – also bereits während sie stattfinden. Klassische Datenbanken basieren dagegen auf dem Ansatz, dass Unternehmen durch Geschäftsanalysen (Business Intelligence) gespeicherter Daten Einblicke gewinnen und erst dann Maßnahmen ergreifen. Die Stream-Verarbeitung unterscheidet sich somit grundlegend von den bisher verwendeten Analyseansätzen, da sie Daten direkt zum Zeitpunkt der Generierung verarbeitet.
Open-Source-Techniken für Stream Processing
Vier Open-Source-basierte Technologien dominieren derzeit das Stream-ProcessingSegment: Apache Spark, Apache Storm, Apache Flink und Kafka Streams, eine Unterkomponente von Apache Kafka.
Apache Spark ist eine Open-Source-Engine, die speziell für die Verarbeitung großer Datenmengen und Analysen sowie eine beschleunigte Analyse auf Hadoop entwickelt wurde. Spark bietet die Möglichkeit, auf Daten aus einer Vielzahl von Quellen zuzugreifen, neben dem Hadoop Distributed File System (HDFS) sind das auch OpenStack Swift, Amazon S3 und Cassandra. Spark ist als ein Batch-Prozessor konzipiert, der die Stream-Verarbeitung durch Aufteilung des Streams in kleine Mikro-Batches bewerkstelligt.
Apache Storm ist ein Framework für verteilte Stream-Processing-Berechnung, welches – ebenso wie Spark – als Projekt der Apache Software Foundation vorangetrieben und weiterentwickelt wird. Storm war eines der ersten Open-Source-Systeme für kontinuierliche Datenstrom-Verarbeitung und arbeitet unter Verwendung vorhandener Warteschlangen- und Datenbanktechnologien, um komplexe Datenströme zu verarbeiten. Zu den wichtigsten Anwendungsfällen zählen Echtzeitanalytik, maschinelles Lernen und Continuous Computing.
Apache Flink dient als Framework und verteilte Verarbeitungsmaschine für zustandsbehaftete Berechnungen über unbegrenzte und begrenzte Datenströme. Flink wurde entwickelt, um in allen gängigen Cluster-Umgebungen zu laufen, Berechnungen mit In-MemoryGeschwindigkeit und in jeder Größenordnung zu betreiben. In den letzten Jahren hat sich Apache Flink als eine der wettbewerbsfähigsten Stream-Processing-Engines im OpenSource-Umfeld etabliert.
Kafka Streams ist eine Client-Bibliothek für die Erstellung von Anwendungen und Mikroservices, bei der die Ein- und Ausgangsdaten in Kafka-Clustern gespeichert werden. Es kombiniert die Einfachheit des Schreibens und Bereitstellens von Standard-Java- und Scala-Anwendungen auf Client-Seite mit den Vorteilen der Server-seitigen Cluster-Technologie von Kafka. Die schlanke Kafka-Streams-Bibliothek unterstützt die Nachrichtenverarbeitung in Microservices und die Echtzeit-Ereignisverarbeitung.
Vier Tools im Vergleich
Apache Flink verzeichnet unter den vier gängigen Stream-Processing-Technologien derzeit die höchste Resonanz. Das Stream-ProcessingWerkzeug machte zuletzt von sich reden, da es als Basis dazu dient, die zustandsorientierte Stream-Verarbeitung und deren Erweiterung mit schnellen, serialisierbaren ACID-Transaktionen (Atomicity, Consistency, Isolation, Durability) direkt auf Streaming-Daten zu unterstützen. Flink ist Stream-native und robust, was den Zugriff auf Konstrukte bezüglich Zustand und Zeit ermöglicht, fehlertolerant und performant. Auf jede der anderen hier genannten Technologien treffen einige dieser Attribute zu, aber Flink liefert das komplette Paket.
Apache Spark erscheint auf den ersten Blick oder auch in der Proof-of-Concept-Phase für die meisten Stream-Processing-Zwecke als ausreichend. Es erfordert aber in der Praxis oft eine aufwendige Abstimmung von Workload-, Cluster- und Spark-spezifischen Konfigurationen wie Micro-Batch-Intervall und MicroBatch-Größe. Während bei Spark eine schnelle Batch-Verarbeitung im Fokus stand, ist Flink von Grund auf für die Verarbeitung von kontinuierlichen Datenströmen, also Stream Processing, konzipiert. Apache Storm unterscheidet zwischen Storm Core und Storm Trident. Während Storm Trident eher mikrobasiert ist, agiert Storm Core eher ereignisnativ wie Apache Flink. Flink ist aber im Kern ereignisgesteuert und unterscheidet nicht zwischen Streaming und Batch. Im Durchsatz ist Flink zudem deutlich performanter als Storm.
Kafka Streams wiederum wurde entwickelt, um Datenströme aus Kafka zu lesen, zu verarbeiten und wieder in Kafka zu schreiben. Kafka Streams wurde als Bibliothek entwickelt, was im Endergebnis nicht so leistungsfähig, robust und performant ist wie bei Apache Flink.
Fazit
Apache Flink setzt sich im Data-StreamUmfeld zunehmend durch und weist die am schnellsten wachsende Akzeptanzrate unter den Anwendern auf. Große Technologieunternehmen, die aufgrund ihres Geschäftsmodells in Echtzeit arbeiten müssen wie Alibaba, Uber und Netflix, setzen bereits auf Apache Flink. Andere Unternehmen verwenden Apache Flink, um geschäftskritische Anwendungen wie Echtzeitanalysen, maschinelles Lernen, Such- und Inhalts-Ranking und Echtzeit-Betrugserkennung zu betreiben. Zu den weiteren Anwendungsfällen, speziell für den Finanzdienstleistungssektor, zählen StammdatenManagement, Kapitalrisiko-Management sowie Echtzeitempfehlungen im E-Commerce.