Stream-Verarbeitung: Hazelcast Jet 4.0 lernt Python und wird reactive

Das Framework zum Verarbeiten paralleler Datenströme bekommt ein natives Python-Interface und führt Observables ein.

In Pocket speichern vorlesen Druckansicht
Stream-Verarbeitung: Hazelcast Jet 4.0 lernt Python und wird Reactive
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Das vor allem für sein In-Memory Data Grid (IMDG) bekannte Unternehmen Hazelcast hat das Streaming-Framework Jet 4.0 veröffentlicht. Das aktuelle Release des Frameworks zum Verarbeiten paralleler Datenströme bringt unter anderem Verbesserungen bei verteilten Transaktionen, native Python-Prozesse und mit Observable eine neue Art von Senken, die reaktive Programmierung erlauben.

Das aktuelle Release hat eine Two-Phase-Commit-Implementierung (2PC) an Bord, die eine Ende-zu-Ende-Kommunikation für Quellen wie Java Message Service (JMS) mit einer garantiert einmaligen Verarbeitung der Daten (Exactly-once) gewährt. Bisher setzte Hazelcast auf den Chandy-Lamport-Algorithmus. Für dieses Schnappschussverfahren zum Ermitteln des globalen Zustands verteilter Systeme musste Jet jedoch die komplette Pipeline inklusive der Quellen und Senken mit einbeziehen.

Außerdem waren bisher sowohl Exactly-once- als auch At-least-once-Prozesse, also die garantiert exakt einmalige beziehungsweise mindestens einmalige Verarbeitung von Daten, nur im Zusammenspiel mit Quellen wie Apache Kafka möglich, nicht jedoch mit JMS.

Besonders im Bereich des Machine Learning (ML) spielt Python eine dominante Rolle, und zahlreiche ML-Anwendungen setzen auf die Verarbeitung von Datenströmen für die Zeitreihenanalyse oder -vorhersage. Hazelcast Jet 3.0 bot lediglich eine Java-API zum Definieren der Pipeline, aber keine direkte Python-Anbindung. Version 4.0 kann nun eigene Python-Prozesse auf jedem Knoten einrichten, die über gRPC (google Remote Procedure Calls) kommunizieren.

Entwickler können die Inhalte der Pipeline mit Python-Funktionen transformieren und dabei auf verbreitete Librarys wie Scikit und NumPy zurückgreifen. So können sie für ML-Modelle direkt auf Daten des Stream-Processing-Frameworks zugreifen.

Mit Version 4.0 hält zudem das reaktive Programmieren Einzug in Hazelcast Jet. Observable kann Nachrichten direkt weiterleiten, wenn sie anfallen und auf die Weise die Datenproduzenten von den Datenkonsumenten entkoppeln. Bisher hat die Jet-Pipeline ihre Daten typischerweise in einer Senke wie IMap abgelegt, aus der Konsumenten manuell lesen mussten. Observable dient nicht nur zum Verarbeiten anfallender Daten, sondern auch zum Behandeln von Fehlern und Informationen darüber, dass ein Job abgeschlossen ist.

Hazelcast Jet 4.0 bringt zudem drei neue Konnektoren mit: für Debezium, Kafka Connect und Twitter. Letzterer kann einen Stream von Tweets direkt in einer Pipeline verarbeiten. Darüber hinaus baut das aktuelle Release auf IMDG 4.0 auf.

Hazelcast hatte Jet erstmals 2017 vorgestellt. Das Framework kann Batch-Daten und Datenströme gleichermaßen verarbeiten. Jet setzt auf eine Pipeline in Form sogenannter Directed Acyclic Graphs (DAG), also gerichtete, azyklische Graphen. Generatoren verarbeiten die eingehenden Daten und verteilen sie an Akkumulatoren. Anschließend folgt die Zusammenführung in sogenannten Combiners, die das Ergebnis zum gewünschten Output liefern. Die ersten Verarbeitungsschritte erfolgen jeweils innerhalb eines Nodes, aber für die Zusammenführung überwindet das System die Cluster- und Knotengrenzen.

Auf dem Weg von der Datenquelle zur -senke verarbeitet Jet die Daten und führt sie auch über Cluster-Grenzen zusammen.

(Bild: Hazelcast)

Die Versionsnummer 4.0 ist leicht irreführend, da die erste stabile Hauptversion im Frühjahr 2019 als Hazelcast Jet 3.0 erschien. Hintergrund ist, dass Hazelcast die Versionierung von Jet an die von IMDG angepasst hat.

Weitere Neuerungen in Jet 4.0 wie die vereinfachte Installation lassen sich dem Hazelcast-Blog entnehmen. Der Quellcode des Open-Source-Projekts findet sich auf GitHub. (rme)