Realtime Data Mining mit Apache Kafka und Samza

Mit Apache Samza lassen sich komplexe Daten-Pipelines aufbauen. Data-Mining-Tasks innerhalb der Verarbeitungskette fördern nebenbei manche Entdeckung zutage.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Realtime Data Mining mit Apache Kafka und Samza
Lesezeit: 20 Min.
Von
  • Peter Hoffmann
  • Paul Watzlaw
Inhaltsverzeichnis

Mit dem Aufkommen verteilter Plattformen und dem damit verbundenen Bedarf an Echtzeitverarbeitung großer Datenmengen rollte in den letzten Jahren eine neue Welle von Anwendungen heran. Stream-Processing-Applikationen ermöglichen als Gegenentwurf zum traditionellen Batch-Processing das Verarbeiten von Daten, sobald diese entstehen, also nahezu in Echtzeit.

Eines der bekanntesten Stream-Processing-Systeme ist Kafka. Es wurde ursprünglich von LinkedIn entwickelt und ist seit 2011 als Apache-Projekt öffentlich verfügbar. LinkedIn nutzt Kafka intensiv zum Tracking der Benutzeraktivitäten, für den Nachrichtenaustausch und für das Sammeln von Kennzahlen. Im Oktober 2019 verzeichnete LinkedIn ein Aufkommen von sieben Billionen Kafka-Nachrichten täglich.

Kafka speichert Nachrichten (Messages) in sogenannten Topics und liest sie dort wieder aus. Anwendungen, die Nachrichten bereitstellen, nennt man Producer. Bei Anwendungen, die Nachrichten aus einem Topic lesen, spricht man von Consumern. Der Producer-Consumer-Ansatz erinnert stark an klassische Message-Broker wie RabbitMQ. Im Unterschied zu einem Message-Broker speichert Kafka jedoch alle Nachrichten im eigenen Transaktions-Log, bei Bedarf auch zeitlich unbegrenzt. Auf diese Weise lassen sich revisionssichere Applikationen erstellen und auch nachträglich neue Consumer-Anwendungen hinzufügen, die das gesamte Transaktions-Log verarbeiten, um eine neue Sicht auf die Daten zu erstellen.