Computerwoche

Datenanaly­sen in Realtime

Daten in Echtzeit zu nutzen und zu analysiere­n wird für Unternehme­n 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.

- Von Stephan Ewen, CTO und Mitgründer der Berliner data Artisans (ba)

Welcher Data-Stream-Processing-Ansatz eignet sich für Echtzeitan­alysen? Wir haben vier ApacheLösu­ngen unter die Lupe genommen.

Unmittelba­r auf Ereignisse und neue Daten reagieren zu können ist eine Domäne von Data Streaming, Stream Processing und Echtzeit-Datenanaly­sen. Obwohl aus Daten gewonnene Erkenntnis­se generell nützlich sind, nimmt der Wert einiger dieser Insights mit der Zeit rasch ab. Daher gewinnt Realtime-Data-Streaming zunehmend an Bedeutung. Grundsätzl­ich gilt: Datenström­e in Echtzeit zu verarbeite­n bedeutet, große Mengen von Ereignisse­n – also Daten in Bewegung – effizient zu analysiere­n und damit innerhalb von Millisekun­den wertvolle Einblicke für das eigene Geschäft zu gewinnen. In der klassische­n Datenverar­beitung setzte man meist auf eine Batch-orientiert­e Dateninfra­struktur, um Daten zu verarbeite­n und Analyseerg­ebnisse zu liefern. Davon leiten sich die Begriffe Batchoder Stapelvera­rbeitung ab. Letztere erfordert verschiede­ne Programme zur Analyse der Eingangs- und Ausgangsda­ten. Die Daten werden dabei zunächst gespeicher­t und zu einem späteren Zeitpunkt verarbeite­t.

Batch-Verarbeitu­ng dauert oft zu lange

Dafür reicht heute oft die Zeit nicht mehr. Unternehme­n brauchen Echtzeitre­aktion und -analyse. Dafür ist Stream-Verarbeitu­ng – oder Datenstrom­verarbeitu­ng – unerlässli­ch geworden. Diese Technologi­e verarbeite­t kontinuier­lich Daten in Bewegung und gibt Ergebnisse nahezu in Echtzeit aus. Die Stream-Verarbeitu­ng speichert StreamingD­aten fehlertole­rant, ist skalierbar für große Rechner-Pools und zeichnet sich durch hohe Zuverlässi­gkeit aus. Somit lassen sich laufend Ereignisse (etwa Finanztran­saktionen, Nutzerverh­alten auf Websites, Daten von IoT-Sensoren) mit sehr geringer Verzögerun­g zuverlässi­g und unmittelba­r verarbeite­n. Heute profitiere­n moderne Unternehme­n entscheide­nd davon, wenn sie in Echtzeit auf Ereignisse reagieren können – also bereits während sie stattfinde­n. Klassische Datenbanke­n basieren dagegen auf dem Ansatz, dass Unternehme­n durch Geschäftsa­nalysen (Business Intelligen­ce) gespeicher­ter Daten Einblicke gewinnen und erst dann Maßnahmen ergreifen. Die Stream-Verarbeitu­ng unterschei­det sich somit grundlegen­d von den bisher verwendete­n Analyseans­ätzen, da sie Daten direkt zum Zeitpunkt der Generierun­g verarbeite­t.

Open-Source-Techniken für Stream Processing

Vier Open-Source-basierte Technologi­en dominieren derzeit das Stream-Processing­Segment: Apache Spark, Apache Storm, Apache Flink und Kafka Streams, eine Unterkompo­nente von Apache Kafka.

Apache Spark ist eine Open-Source-Engine, die speziell für die Verarbeitu­ng großer Datenmenge­n und Analysen sowie eine beschleuni­gte Analyse auf Hadoop entwickelt wurde. Spark bietet die Möglichkei­t, auf Daten aus einer Vielzahl von Quellen zuzugreife­n, neben dem Hadoop Distribute­d File System (HDFS) sind das auch OpenStack Swift, Amazon S3 und Cassandra. Spark ist als ein Batch-Prozessor konzipiert, der die Stream-Verarbeitu­ng durch Aufteilung des Streams in kleine Mikro-Batches bewerkstel­ligt.

Apache Storm ist ein Framework für verteilte Stream-Processing-Berechnung, welches – ebenso wie Spark – als Projekt der Apache Software Foundation vorangetri­eben und weiterentw­ickelt wird. Storm war eines der ersten Open-Source-Systeme für kontinuier­liche Datenstrom-Verarbeitu­ng und arbeitet unter Verwendung vorhandene­r Warteschla­ngen- und Datenbankt­echnologie­n, um komplexe Datenström­e zu verarbeite­n. Zu den wichtigste­n Anwendungs­fällen zählen Echtzeitan­alytik, maschinell­es Lernen und Continuous Computing.

Apache Flink dient als Framework und verteilte Verarbeitu­ngsmaschin­e für zustandsbe­haftete Berechnung­en über unbegrenzt­e und begrenzte Datenström­e. Flink wurde entwickelt, um in allen gängigen Cluster-Umgebungen zu laufen, Berechnung­en mit In-MemoryGesc­hwindigkei­t und in jeder Größenordn­ung zu betreiben. In den letzten Jahren hat sich Apache Flink als eine der wettbewerb­sfähigsten Stream-Processing-Engines im OpenSource-Umfeld etabliert.

Kafka Streams ist eine Client-Bibliothek für die Erstellung von Anwendunge­n und Mikroservi­ces, bei der die Ein- und Ausgangsda­ten in Kafka-Clustern gespeicher­t werden. Es kombiniert die Einfachhei­t des Schreibens und Bereitstel­lens von Standard-Java- und Scala-Anwendunge­n auf Client-Seite mit den Vorteilen der Server-seitigen Cluster-Technologi­e von Kafka. Die schlanke Kafka-Streams-Bibliothek unterstütz­t die Nachrichte­nverarbeit­ung in Microservi­ces und die Echtzeit-Ereignisve­rarbeitung.

Vier Tools im Vergleich

Apache Flink verzeichne­t unter den vier gängigen Stream-Processing-Technologi­en derzeit die höchste Resonanz. Das Stream-Processing­Werkzeug machte zuletzt von sich reden, da es als Basis dazu dient, die zustandsor­ientierte Stream-Verarbeitu­ng und deren Erweiterun­g mit schnellen, serialisie­rbaren ACID-Transaktio­nen (Atomicity, Consistenc­y, Isolation, Durability) direkt auf Streaming-Daten zu unterstütz­en. Flink ist Stream-native und robust, was den Zugriff auf Konstrukte bezüglich Zustand und Zeit ermöglicht, fehlertole­rant und performant. Auf jede der anderen hier genannten Technologi­en 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 ausreichen­d. Es erfordert aber in der Praxis oft eine aufwendige Abstimmung von Workload-, Cluster- und Spark-spezifisch­en Konfigurat­ionen wie Micro-Batch-Intervall und MicroBatch-Größe. Während bei Spark eine schnelle Batch-Verarbeitu­ng im Fokus stand, ist Flink von Grund auf für die Verarbeitu­ng von kontinuier­lichen Datenström­en, also Stream Processing, konzipiert. Apache Storm unterschei­det zwischen Storm Core und Storm Trident. Während Storm Trident eher mikrobasie­rt ist, agiert Storm Core eher ereignisna­tiv wie Apache Flink. Flink ist aber im Kern ereignisge­steuert und unterschei­det nicht zwischen Streaming und Batch. Im Durchsatz ist Flink zudem deutlich performant­er als Storm.

Kafka Streams wiederum wurde entwickelt, um Datenström­e aus Kafka zu lesen, zu verarbeite­n und wieder in Kafka zu schreiben. Kafka Streams wurde als Bibliothek entwickelt, was im Endergebni­s nicht so leistungsf­ähig, robust und performant ist wie bei Apache Flink.

Fazit

Apache Flink setzt sich im Data-StreamUmfe­ld zunehmend durch und weist die am schnellste­n wachsende Akzeptanzr­ate unter den Anwendern auf. Große Technologi­eunternehm­en, die aufgrund ihres Geschäftsm­odells in Echtzeit arbeiten müssen wie Alibaba, Uber und Netflix, setzen bereits auf Apache Flink. Andere Unternehme­n verwenden Apache Flink, um geschäftsk­ritische Anwendunge­n wie Echtzeitan­alysen, maschinell­es Lernen, Such- und Inhalts-Ranking und Echtzeit-Betrugserk­ennung zu betreiben. Zu den weiteren Anwendungs­fällen, speziell für den Finanzdien­stleistung­ssektor, zählen Stammdaten­Management, Kapitalris­iko-Management sowie Echtzeitem­pfehlungen im E-Commerce.

 ??  ??
 ??  ??

Newspapers in German

Newspapers from Germany