Datenanalyse, nicht nur fürs IoT Stream-Processing mit Apache Flink

Von Thomas Joos

Anbieter zum Thema

Für eine effektive, schnelle und unmittelbarer Verarbeitung von Daten zur Analyse ist Data Streaming eine enorm wichtige und interessante Vorgehensweise. Apache Flink ist ein Open Source Tool, das diese Möglichkeiten bietet.

Apache Flink ist ein quelloffenes Stream Processing Framework, das leistungsstarke Stream- und Batch-Processing-Funktionen bietet.
Apache Flink ist ein quelloffenes Stream Processing Framework, das leistungsstarke Stream- und Batch-Processing-Funktionen bietet.
(Bild: Flink.Apache.org )

Apache Flink ist ein Tool für das Data Streaming/Stream Processing von großen Datenmengen. Das quelloffene Stream Processing Framework bietet leistungsstarke Stream- und Batch-Processing-Funktionen.

Der Quellcode des Projektes steht auch auf GitHub zur Verfügung. Viele Anwendungen im Bereich der Datenanalyse erhalten mittlerweile ihre Daten in Echtzeit von einer großen Anzahl an Quellen. Im IoT-Bereich ist zum Beispiel das Streaming von Daten eher die Regel als die Ausnahme. Damit die Anwendungen, die diese Daten verarbeiten sollen, auch mit den richtigen Daten versorgt werden, sind Tools wie Apache Flink kaum mehr wegzudenken.

Die Möglichkeiten von Apache Flink im Überblick
Die Möglichkeiten von Apache Flink im Überblick
(Bild: Flink.Apache.org )

Data Streaming reduziert die Notwendigkeit zur teuren Datenspeicherung

Muss eine Anwendung große Datenmengen aus verschiedenen Quellen analysieren, erfolgt häufig zunächst eine Speicherung der Daten in einer Datenbank. Aus dieser Datenbank heraus wird das Analyse-Programm mit den notwendigen Daten versorgt. Dadurch leidet natürlich die Leistung und gleichzeitig erhöhen sich die notwendigen Investitionen für die Analyse, da Massenspeicher in Form von Datenbanken natürlich teuer ist und entsprechender Speicherplatz notwendig ist.

Beim Einsatz von Data Streams oder Stream Processing ist keine Datenspeicherung und vorherige Aufbereitung der Daten notwendig. Durch Tools wie Apache Flink werden die eingehenden Daten in Echtzeit verarbeitet. Alle zu analysierenden Daten werden bereits beim Erstellen analysiert, ohne zuvor erst kompliziert und teuer gespeichert werden zu müssen. Tools wie Apache Flink helfen dabei, Datenströme zu empfangen und weiterzusenden. Dabei finden Analysen statt und die Lösung sorgt dafür, dass die Daten für das Analyseprogramm effizient und fehlertolerant zur Verfügung stehen. Die wichtigsten Features von Apache Flink sind:

  • APIs in Java und Scala
  • Eine Laufzeitumgebung, die gleichzeitig einen sehr hohen Durchsatz und eine geringe Ereignislatenz unterstützt
  • Unterstützung für Ereigniszeit und Out-of-Order-Verarbeitung in der DataStream-API, basierend auf dem Dataflow-Modell
  • Verschiedene Zeitsemantiken (Ereigniszeit, Verarbeitungszeit)
  • Fehlertoleranz mit Verarbeitungsgarantie
  • Natürliches back-pressure in Streaming-Programmen
  • Bibliotheken für Graphverarbeitung (Batch), maschinelles Lernen (Batch) und komplexe Ereignisverarbeitung (Streaming)
  • Integrierte Unterstützung für iterative Programme (BSP) in der DataSet-API (Batch)
  • Benutzerdefinierte Speicherverwaltung für Umschalten zwischen In-Memory- und Out-of-Core-Datenverarbeitungsalgorithmen
  • Kompatibilitätsschichten für Apache Hadoop MapReduce
  • Integration mit YARN, HDFS, HBase und anderen Komponenten des Apache-Hadoop-Ökosystems

Hoher Durchsatz und niedrige Latenz sind wichtig

Bei der Analyse der Daten spielt der Datendurchsatz eine wichtige Rolle. Dieser muss mit der Menge an Daten zurechtkommen, die zum Beispiel von den IoT-Sensoren versendet werden. Gleichzeitig muss die Latenz niedrig sind, damit diese Daten auch effektiv und schnell verarbeitet werden können.

Normalerweise arbeiten Anwendungen wie Apache Flink nie alleine. Solche Anwendungen erhalten Daten von Quellen, verarbeiten diese Daten, und senden diese anschließend an weitere Anwendungen. Das heißt, dass Flink nicht nur schnell Daten empfangen und verarbeiten muss, sondern die Daten auch in der Geschwindigkeit weitersenden kann, dass die Ziel-Anwendung die vorbereiteten Daten effektiv nutzen kann. Dazu kann Apache Flink die analysierten Daten und die Streams in Dateisystemen ablegen. Zum Einsatz kommen hier unter anderem HDFS oder S3. Auch das Speichern in herkömmlichen Datenbanken ist möglich, zum Beispiel Apache Cassandra oder ElasticSearch

Apache Flink ermöglicht eine sehr schnelle Verarbeitung von großen Datenmengen und ist in diesem Bereich auch in der Lage Berechnungen zustandsorientiert durchzuführen. Dabei ist das Tool auch genau in der Verarbeitung. Diese Kombination aus Leistungsfähigkeit, Geschwindigkeit und Genauigkeit macht Apache Flink ideal für den Einsatz in Umgebungen, in denen unbegrenzte Datenströme schnell und zuverlässig analysiert werden sollen. Ein Streaming-Beispiel sieht zum Beispielfolgendermaßen aus:

case class WordWithCount(word: String, count: Long)val text = env.socketTextStream(host, port, '\n')val windowCounts = text.flatMap { w => w.split("\\s") } .map { w => WordWithCount(w, 1) } .keyBy("word") .window(TumblingProcessingTimeWindow.of(Time.seconds(5))) .sum("count")windowCounts.print()

Apache Flink ist stark skalierbar

Gleichzeitig ist Apache auch stark skalierbar und kann die auf einer großen Anzahl von Clusterknoten eingehenden Daten verarbeiten. Das ermöglicht wiederum eine Zusammenarbeit mit anderen Verarbeitungslösungen wie Hadoop, YARN oder Apache Mesos. Beim Betrieb in einem Cluster kann mit Flink sichergestellt werden, dass die Analyse mit hoher Verfügbarkeit stattfinden kann.

Weitere Stärken sind die einfache Integration in bestehende Systeme. Dabei hilft auch die REST API, die Anwendungen steuern kann. Dazu kommen weitere APIs mit denen sich auch andere Frameworks und eine Vielzahl an Anwendungen anbinden lassen. Dazu kommen nahezu alle bekannten Operationen zum Verarbeiten von Daten. Diese Flexibilität ermöglicht es zum Beispiel den Zustand jedes eingehenden Ereignisses zu speichern und Timer zu hinterlegen. Zum Zeitpunkt des Auslösens des Timers kann Flink den Zustand des Ereignisses aufrufen und mit anderen Ereignissen für Berechnungen korrelieren.

Zusätzlich bietet Apache Flink auch eine API für den Zugriff auf Tabellen und eine SQL-Unterstützung für Abfragen. Diese Abfragen können auch auf die Quellen ausgeführt werden. Dadurch lassen sich Daten aus einer begrenzten Anzahl an Daten auslesen, aber auch aus kompletten Datenströmen. Weitere APIs ermöglichen auch die Verarbeitung komplexerer Daten und Muster in Ereignissen.

Artikelfiles und Artikellinks

(ID:48397209)