Apache Flink 1.6 verbessert die zustandsorientierte Streamverarbeitung

Das Stream-Processing-Framework Flink bietet in Version 1.6 unter anderem eine API für die Lebenszeit des Zustands.

In Pocket speichern vorlesen Druckansicht
Apache Flink 1.6 verbessert die zustandsorientierte Streamverarbeitung
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Die Macher von Apache Flink haben Version 1.6 des Stream-Processing-Framworks herausgegeben. Insgesamt haben die Entwickler seit dem im Mai erschienenen Flink 1.5 gut 360 Issues geschlossen. Die Neuerungen konzentrieren sich unter anderem auf die zustandsorientierte (stateful) Verarbeitung der Datenströme. Dabei verwaltet Flink den Zustand von Anwendungen lokal und garantiert für dessen Konsistenz.

Neu in Version 1.6 ist die native Unterstützung für State TTL (Time To Live), die eine maximale Lebenszeit des Zustands angibt. Ist diese abgelaufen, verweigert Flink den Zugriff auf die zugehörigen Zustandswerte und räumt die verfallenen Werte beim Zugriff auf. Unter anderem soll die Funktion bei der Umsetzung von Datenschutzrichtlinien wie der DSGVO helfen.

Der Timer-State lässt sich nun in RocksDB statt nur im dynamischen Speicher ablegen. Gleichzeitig sind Snapshots davon nun asynchron und lassen sich inkremental verwalten. Das Löschen von Timern haben die Macher vereinfacht und eine API dafür bereitgestellt.

Der in Flink 1.5 eingeführte SQL-Client hat einige Erweiterungen erhalten. Das Befehlsfenster erlaubt neuerdings das Registrieren nutzerdefinierter Funktionen und das Ausführen von Batch-Abfragen. Anwender können außerdem im aktuellen CLI den SQL-Befehl INSERT INTO verwenden, um Abfrageergebnisse in externen Systemen zu speichern.

Neu ist zudem eine vereinheitliche API für die Anbindung an andere Systeme über TableSink-Objekte. Außerdem arbeitet Flink besser mit anderen Apache-Projekten zusammen. Unter anderem kennt die Table-&-SQL-API die Typen von Apache Avro. Die TableSink zum Ablegen von Daten in Apache Kafka nutzt die neu eingeführte vereinheitliche API und verarbeitet Daten im JSON- und Avro-Format.

Hinsichtlich der Konnektoren gibt es auch einige nennenswerten Ergänzungen. Die neue StreamingFileSink baut auf FileSystem auf und schreibt Daten nach dem Exactly-Once-Prinzip, also genau einmal, ins Dateisystem. Bei letzteren kann es sich um lokale Datenspeicher oder das Hadoop Distributed File System (HDFS) handeln. Für die Zukunft ist eine Anbindung an Amazon S3 (Simple Storage Service) geplant. Außerdem bringt Flink 1.6 einen Konnektor für ElasticSearch 6.x mit.

Mit dem neuen Job Cluster Container Entrypoint tragen die Entwickler der Tatsache Rechnung, dass immer mehr Anwendungen in Container verpackt werden. Mit ihm lässt sich ein Container-Image inklusive einer JAR-Datei (Java Archive) für vom Nutzer definierten Code erstellen. Neu ist zudem, dass der Flink-Client alle für einen Job relevanten Inhalte über ein einzelnes POST-Aufruf an den Server schickt, um den Umgang mit REST-Schnittstellen zu verbessern.

Weitere Details wie die auf Jepsen aufgebaute Testsuite lassen sich der Ankündigung von Flink 1.6 entnehmen. Alle Neurungen und Bugfixes finden sich im Changelog. Das aktuelle Release steht sowohl im Sourcecode als auch als Binaries mit und ohne Hadoop (2.4 bis 2.8) auf der Apache-Site zum Herunterladen bereit. (rme)