Datenverarbeitung: Apache Flink 1.14 kombiniert Batch- und Stream-Verarbeitung

Das Stream-Processing-Framework führt das Setzen von Checkpoints in teilweise abgeschlossenen Anwendungen ein.

In Pocket speichern vorlesen Druckansicht
Eichhörnchen

(Bild: Elli Stattaus, gemeinfrei (Creative Commons CC0))

Lesezeit: 3 Min.

Apache Flink ist in Version 1.14 erschienen. Das Framework zur Verarbeitung von Datenströmen widmet sich unter anderem einer Vereinheitlichung der Batch- und Stream-Verarbeitung durch neue Checkpoint-Optionen. Daneben verabschiedet es sich von der Legacy SQL Engine, deren Nachfolgerin die Blink SQL Engine ist. Diese führte das Flink-Team vor über zwei Jahren als eine schnellere und besser ausgestattete Alternative ein. Insgesamt finden sich in der neuen Version die Arbeiten von über 200 Entwicklerinnen und Entwicklern wieder, die über 1.000 Issues schlossen.

Apache Flink bietet sowohl die sequenzielle Verarbeitung von Daten in Form von Batch Processing (Stapelverarbeitung) als auch das Echtzeit-basierte Stream Processing (Verarbeitung von Ereignisströmen) an. Anders ausgedrückt, lassen sich diese Ansätze als begrenzte Streams mit einem definierten Anfangs- und Endpunkt oder unbegrenzte Streams mit einem Start-, aber keinem Endpunkt beschreiben, wie der Dokumentation von Apache Flink zu entnehmen ist.

Version 1.14 bringt zusätzliche Möglichkeiten, die beiden Datenverarbeitungsoptionen zu kombinieren. So erlaubt das neue Release das Setzen von Checkpoints in Anwendungen, die teilweise noch laufen und teilweise abgeschlossen sind. Ursprünglich ließ sich das nur für laufende Anwendungen realisieren. Zudem erhalten begrenzte Ströme nun einen finalen Checkpoint, wenn sie ihr Ende erreicht haben. Wenn Flink begrenzte Datenströme als Streams statt als Batches verarbeitete, stoppte bisher das Setzen von Checkpoints gegen Ende der Verarbeitung, sobald einige Tasks abgeschlossen waren.

Apache Flink 1.14 kombiniert die Verarbeitung begrenzter und unbegrenzter Datenströme.

(Bild: Apache)

Um Checkpoints nach dem Beenden von Tasks sowie den finalen Checkpoint zu aktivieren, müssen Entwicklerinnen und Entwickler manuell execution.checkpointing.checkpoints-after-tasks-finish.enabled: true zur Konfiguration hinzufügen. In Zukunft soll das neue Feature zum Standard werden.

Apache Flink 1.14 fügt Function Chaining für die Python DataStream API hinzu, was eine höhere Performance ermöglichen soll. Ein neuer Loopback-Modus zur Vereinfachung des Debuggings von Python-Funktionen steht in PyFlink ebenfalls bereit, denn für gewöhnlich laufen Python-Funktionen in einem separaten Prozess neben der Flink-JVM. Mit dem Loopback-Modus, der in lokalen Deployments standardmäßig aktiviert ist, sollen sich benutzerdefinierte Python-Funktionen im Python-Prozess des Clients ausführen lassen.

Flink von Berlin nach China

(Bild: Apache Software Foundation)

Das Projekt mit dem Eichhörnchen als Maskottchen hat seine Ursprünge in der deutschen Hauptstadt. Es entstand 2010 im Rahmen des Stratosphere-Forschungsprojekt an der TU Berlin, der Humboldt-Universtät zu Berlin und dem Hasso-Plattner-Institut in Potsdam.

Seit 2014 ist das Projekt unter dem Dach der Apache Software Foundation aufgestellt, wo es Anfang 2015 zum Top-Level-Projekt aufgestiegen ist. 2016 erschien Version 1.0 des Stream-Processing-Frameworks, das unter anderem bei Netflix und Uber zum Einsatz kommt.

Einige Flink-Projektbeteiligte haben 2014 das Start-up data Artisans gegründet, das seit 2019 eine Tochter von Alibaba ist. Kurz nach der Übernahme durch den chinesischen Cloud-Anbieter änderte data Artisans seinen Namen in Ververica.

Daneben entfernt Version 1.14 nicht nur die veraltete SQL Engine, sondern auch den Support für Apache Mesos, denn dieser stieß bei Nutzerinnen und Nutzern von Flink auf zu geringes Interesse. Die neue Version lässt sich zwar weiterhin auf dem Clustermanager betreiben, jedoch nur mithilfe von weiteren Projekten wie der Container-Orchestrierungsplattform Marathon.

Weitere Informationen zu Apache Flink 1.14 bieten ein Blogeintrag sowie die Release Notes.

(mai)