Open-Source-Streaming-Plattform

Apache Kafka – von Big zu Fast Data

| Autor / Redakteur: Otto Geißler / Nico Litzel

Apache Kafka verbessert herkömmliche Message-Broker durch Optimierungen beim Datendurchsatz, bei der Partitionierung, Replikation, Latenz und Zuverlässigkeit.
Apache Kafka verbessert herkömmliche Message-Broker durch Optimierungen beim Datendurchsatz, bei der Partitionierung, Replikation, Latenz und Zuverlässigkeit. (Bild: Apache Software Foundation)

Die verteilte Streaming-Plattform Apache Kafka wurde für ein schnelles Verarbeiten und Speichern von Billionen von Datenströmen pro Tag entwickelt. Gleichzeitig stellt sie eine Schnittstelle zum Laden und Exportieren von Datenströmen zu Drittsystemen bereit.

Das in der Programmiersprache Scala geschriebene Apache-Kafka-Programm wurde zunächst von LinkedIn als Messaging-Queue (Nachrichten-Warteschlange) konzipiert. Seit 2012 gehört es als Open-Source-Projekt zur Apache Software Foundation. Die Entwickler von Kafka gründeten dann 2014 das Unternehmen Confluent aus, das sich auf die Weiterentwicklung des Programms spezialisiert hat. Im Laufe der Zeit entwickelte sich Apache Kafka schnell von einer Messaging-Warteschlange zu einer vollwertigen Streaming-Plattform.

Wesentliche Vorteile von Apache Kafka

Die verteilte Streaming-Plattform überzeugt vor allem mit einer Kombination aus Vielseitigkeit und Einfachheit sowie mit einem erstaunlichen Datendurchsatz und stellt damit vergleichbare Systeme in den Schatten. Das heißt, geringe Latenzen und die Möglichkeit, Echtzeit-Streams zu verarbeiten.

Des Weiteren bietet Apache Kafka horizontale Skalierungen, die den Einsatz in modernen Cluster-Systemen ermöglichen. Die hohe Performanz lässt sich jedoch nicht nur auf eine gute Skalierbarkeit, sondern auch auf eine gute Replikationsfähigkeit und damit auf eine hohe Ausfallsicherheit zurückführen. Die Skalierbarkeit ist in Apache Kafka so stark verwurzelt, dass ein nicht-repliziertes Apache-Kafka-System im Grunde nur ein Apache-Kafka-System mit dem Replikationsfaktor 1 sein kann.

Daher erklärt sich auch der hohe Bekanntheitsgrad der Streaming-Plattform im Zusammenhang mit Big Data. So verwundert es nicht, dass die Plattform Teil vieler Hadoop-Distributionen wie zum Beispiel Hortonworks oder Cloudera wurde.

Vielfältige Einsatzbereiche

Apache Kafka bietet zahlreiche Anwendungsbereiche. Zu den typischen beziehungsweise wichtigsten Einsatzzwecken gehören:

  • Messaging: Überwachen der operativen Kennzahlen von verteilten Anwendungen.
  • Echtzeit-Tracking von Webseiten sowie deren Aktivitäten.
  • Aggregation der Log-Dateien von unterschiedlichen Servern.
  • Event-Sourcing beim Protokollieren und Anfordern von Statusänderungen in einer Datenbank.
  • Synchronisierung von Daten in verteilten Systemen.
  • Wiederherstellen von Daten nach dem Ausfall von Systemen.
  • Das Trainieren von Modellen beim Machine Learning in Echtzeit.
  • Ableiten analytischer Modelle in Echtzeit für das Machine Learning.
  • Überwachen und Analysieren beim Machine Learning.

Technische Grundfunktionen

Wenn Datenquellen und Datenempfänger direkt miteinander verbunden werden, können Probleme auftauchen. Das ist zum Beispiel der Fall, wenn eine Zwischenspeicherung bei einer Direktverbindung der Systeme nicht funktioniert, da der Empfänger im Moment nicht verfügbar ist. Oder wenn ein Sender den Empfänger überlastet, indem er Daten schneller sendet, als der Empfänger diese verarbeiten kann. Im Vergleich zu einer reinen Messaging-Queue arbeitet Apache Kafka fehlertolerant und ist extrem skalierbar.

Damit solche Probleme gelöst werden können, kommen Messaging-Systeme wie zum Beispiel Apache Kafka zum Einsatz, die zwischen Sender und Empfänger platziert werden. Messaging-Systeme unterscheiden, ob der Nachrichtenkanal als Queue oder als Topic konzipiert ist.

Eine Queue kann man sich wie Warteschlangen an Kassen von Supermärkten vorstellen. Sobald eine Kasse wieder frei ist, wird der nächste Kunde aufgerufen und aus der Schlange entfernt. Dadurch wird jeder Kunde nur einmal zur Kasse gebeten. Bei verteilten Systemen wird der Sender einer Nachricht als Producer bezeichnet und der Empfänger als Consumer.

Inside Apache Kafka

Die verteilte Streaming-Plattform Apache Kafka umfasst vier Haupt-Schnittstellen:

  • Producer-API: Schreiben von Nachrichten.
  • Consumer-API: Lesen von Nachrichten.
  • Streams-API: Analysieren und Transformieren von Nachrichten.
  • Connect-API: Synchronisation zweier Datensysteme, zum Beispiel einer relationalen Datenbank und Hadoops HDFS.

Bei Apache Kafka wird unter einem Topic die logische Instanz benannt, zu der Records (Nachrichten) gesendet und von welcher gelesen werden kann. Sollen Sensordaten von Maschinen für Industrial Analytics verschickt werden, so könnte man ein Topic namens „Sensor Data“ erzeugen. Das Topic besteht wiederum aus mehreren Partitionen, deren genaue Anzahl konfigurierbar ist. In diesem Fall repräsentiert die Maschine den Producer (Sender einer Nachricht), der vorgibt, welche Datensätze in welche Partition zu schreiben sind.

Innerhalb einer Partition eines Topics werden Nachrichten als Offset (Ort innerhalb eines „Blocks“) identifiziert. Dabei handelt es sich um eine aufsteigende Zahl, die jede Nachricht eindeutig kennzeichnet. Eingehende Nachrichten werden immer auf einer Festplatte gespeichert. Da die Auslastung der Festplatten mit der Laufzeit des Systems zunimmt, müssen Nachrichten regelmäßig wieder entfernt werden. Dafür bietet Kafka verschiedene Cleanup-Policies an.

Zu diesem Zweck unterscheidet Apache Kafka zwei verschiedene Topics: sogenannte „normal“ und „compacted“ Topics. Die „normalen“ Topics speichern Nachrichten für einen definierten Zeitraum oder geben vor, ein definiertes Speicherlimit nicht zu übersteigen. Wenn Nachrichten älter als die konfigurierte „retention time“ (Beibehaltung, Speicherung) sind oder wenn der Speicherplatz einer Partition bereits über dem vorgegebenen Limit belegt wurde, löscht Kafka die alten Nachrichten, um wieder freie Speicherplätze auf der Festplatte zu ermöglichen.

Standard ist meist die Policy „Retention-Time“, wofür eine Löschung der Nachrichten nach sieben Tagen erfolgt. Mit den „compacted“ Topics bietet Kafka auch die Möglichkeit, Nachrichten – ohne Zeit- oder Platzlimitierung - für immer zu speichern. Der Anwender kann natürlich auch Nachrichten löschen, wenn er die bestimmte Nachricht als „Tombstone“ mit einer Null als Wert im Schlüssel kennzeichnet.

Big-Data-Framework Apache Kafka 2.0

Die Apache Software Foundation veröffentlichte im Jahre 2018 die Version 2.0 von Apache Kafka. Das Major-Release brachte rund 40 neue Funktionen. Hinzu kamen Korrekturen und Verbesserungen von 246 JIRA-Tickets.

Zu den neuen Funktionen zählen unter anderem die Unterstützung für vordefinierte ACLs (Access Control List), eine Vereinfachung der Zugriffssteuerung in großen Deployments, der Massendatenzugriff auf Themen, Verbrauchergruppen oder Transaktions-IDs mit einem Präfix mit nur einer einzigen Regel sowie die Zugriffssteuerung für das Erstellen der Topics.

Neu ist ebenso das Framework für die Authentifizierung bei Kafka-Brokern mit OAuth2-Bearer-Token. Standard wurde auch die Überprüfung des Hostnamens für SSL-Verbindungen. So soll sichergestellt werden, dass die SSL-Konfiguration nicht mehr für Man-in-the-Middle-Attacken zugänglich ist. SASL/OAUTHBEARER ist jetzt mit Callbacks für das Abrufen und Überprüfen der Token anpassbar. Verbessert wurden ebenfalls das Replikationsprotokoll sowie die Ausfallsicherheit von Brokern.

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45600713 / Infrastruktur)