So installierst du Apache Kafka unter Ubuntu 22.04

Apache Kafka ist ein verteilter Datenspeicher für die Verarbeitung von Streaming-Daten in Echtzeit. Er wird von der Apache Software Foundation entwickelt und in Java und Scala geschrieben. Apache Kafka wird für den Aufbau von Echtzeit-Datenstrom-Pipelines und Anwendungen verwendet, die sich an den Datenstrom anpassen, insbesondere für Unternehmensanwendungen und geschäftskritische Anwendungen. Es ist eine der beliebtesten Datenstromplattformen, die von Tausenden von Unternehmen für Hochleistungs-Datenpipelines, Streaming-Analysen und Datenintegration genutzt wird.

Apache Kafka kombiniert Messaging, Speicherung und Stream-Verarbeitung an einem Ort. Ermöglicht es den Nutzern, leistungsstarke Datenströme zum Sammeln, Verarbeiten und Streamen von Daten in Echtzeit einzurichten. Kafka wird in modernen verteilten Anwendungen eingesetzt und ist in der Lage, Milliarden von gestreamten Ereignissen zu verarbeiten.

In diesem Lernprogramm installierst du Apache Kafka auf einem Ubuntu 22.04 Server. Du lernst, wie du Apache Kafka manuell aus Binärpaketen installierst. Dazu gehört auch die Grundkonfiguration, damit Apache als Dienst läuft, und der grundlegende Betrieb von Apache Kafka.

Voraussetzungen

Um dieses Tutorial zu absolvieren, brauchst du die folgenden Voraussetzungen

  • Einen Ubuntu 22.04 Server mit mindestens 2 GB oder 4 GB Arbeitsspeicher.
  • Einen Nicht-Root-Benutzer mit Root-/Administrator-Rechten.

Java OpenJDK installieren

Apache Kafka ist ein in Scala und Java geschriebener Stream-Processing- und Message-Broker. Um Kafka zu installieren, musst du das Java OpenJDK auf deinem Ubuntu-System installieren. Zum Zeitpunkt der Erstellung dieses Artikels benötigte die neueste Version von Kafka v3.2 mindestens das Java OpenJDK v11, das standardmäßig im Ubuntu-Repository verfügbar ist.

Um zu beginnen, führe den folgenden apt-Befehl aus, um das Ubuntu-Repository zu aktualisieren und den Paketindex zu aktualisieren.

sudo apt update

Installiere Java OpenJDK 11 mit dem unten stehenden apt-Befehl. Gib Y ein, um die Installation zu bestätigen, und drücke ENTER, um die Installation zu starten.

sudo apt install default-jdk

Das Java OpenJDK ist nun auf deinem Ubuntu-System installiert. Verwende den folgenden java-Befehl, um die Java-Version zu prüfen und zu verifizieren. Du wirst sehen, dass das Java OpenJDK v11 installiert ist.

java version

Java-Version prüfen

Installation von Apache Kafka

Nachdem du Java OpenJDK installiert hast, startest du die Installation von Apache Kafka manuell mit dem Binärpaket. Zum Zeitpunkt dieses Artikels ist die neueste Version von Apache Kafka v3.2. Um sie zu installieren, musst du einen neuen Systembenutzer anlegen und das Kafka-Binärpaket herunterladen.

Führe den folgenden Befehl aus, um einen neuen Systembenutzer namens „kafka“ anzulegen. Dieser Benutzer hat das Standard-Home-Verzeichnis „/opt/kafka“ und den Shell-Zugang deaktiviert.

sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka

Lade das Apache Kafka Binärpaket mit dem unten stehenden curl-Befehl herunter. Du solltest das Apache Kafka-Paket „kafka_2.13-3.2.0.tgz“ erhalten.

sudo curl -fsSLo kafka.tgz https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz

Nachdem der Download abgeschlossen ist, entpacke die Datei „kafka_2.13-3.2.0.tgz“ mit dem tar-Befehl. Verschiebe dann das entpackte Verzeichnis nach „/opt/kafka“.

tar -xzf kafka.tgz
sudo mv kafka_2.13-3.2.0 /opt/kafka

Ändere nun die Eigentumsrechte am Kafka-Installationsverzeichnis„/opt/kafka“ auf den Benutzer„kafka„.

sudo chown -R kafka:kafka /opt/kafka

Als Nächstes führst du den folgenden Befehl aus, um ein neues Verzeichnis„logs“ für die Speicherung der Apache-Kafka-Logdateien zu erstellen. Bearbeite dann die Kafka-Konfigurationsdatei„/opt/kafka/config/server.properties“ mit dem Editor nano.

sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

Ändere den Standardspeicherort für Apache Kafka-Logs in das Verzeichnis„/opt/kafka/logs„.

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

Speichere und schließe die Datei, wenn du fertig bist.

Einrichten von Apache Kafka als Dienst

Jetzt hast du die Grundkonfiguration für Apache Kafka. Wie kannst du nun Apache Kafka auf deinem System ausführen? Es wird empfohlen, Apache Kafka als systemd-Dienst zu betreiben. So kannst du Apache Kafka mit einem einzigen Kommandozeilenbefehl„systemctl“ starten, stoppen und neu starten.

Um den Apache Kafka-Dienst einzurichten, musst du zuerst den Zookeeper-Dienst einrichten. Der Apache Zookeeper dient dazu, die Dienste zu zentralisieren und die Wahl der Controller, die Konfigurationen der Topics, die Zugriffskontrolllisten (ACL) und die Mitgliedschaft (für den Kafka-Cluster) zu verwalten.

Der Zookeeper ist standardmäßig in Apache Kafka enthalten. Du wirst die Servicedatei für Zookeeper einrichten und dann eine weitere Servicedatei für Kafka erstellen.

Führe den folgenden Befehl aus, um eine neue systemd-Dienstdatei „/etc/systemd/system/zookeeper.service“ für Zookeeper zu erstellen.

sudo nano /etc/systemd/system/zookeeper.service

Füge die folgende Konfiguration in die Datei ein.

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Wenn du fertig bist, speichere und schließe die Datei.

Als Nächstes erstellst du mit dem unten stehenden Befehl eine neue Servicedatei für Apache Kafka „/etc/systemd/system/kafka.service“.

sudo nano /etc/systemd/system/kafka.service

Füge die folgende Konfiguration in die Datei ein. Dieser Kafka-Dienst wird nur ausgeführt, wenn der Zookeeper-Dienst läuft.

[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei, wenn du fertig bist.

Lade nun den systemd manager mit dem unten stehenden Befehl neu. Dieser Befehl wendet die neuen systemd-Dienste an, die du gerade erstellt hast.

sudo systemctl daemon-reload

Zookeeper und Kafka als Dienst einrichten

Starte und aktiviere nun den Zookeeper-Dienst mit dem unten stehenden Befehl.

sudo systemctl enable zookeeper
sudo systemctl start zookeeper

Starte und aktiviere dann den Apache Kafka-Dienst mit dem folgenden Befehl.

sudo systemctl enable kafka
sudo systemctl start kafka

Überprüfe und verifiziere die Dienste Zookeeper und Apache Kafka mit dem folgenden Befehl.

sudo systemctl status zookeeper
sudo systemctl status kafka

In der folgenden Ausgabe kannst du sehen, dass der Zookeeper-Dienst aktiviert ist und beim Systemstart automatisch ausgeführt wird. Und der aktuelle Status des Zookeeper-Dienstes ist “ running“.

Status des Zookeeper-Dienstes

Der Apache Kafka-Dienst ist ebenfalls aktiviert und wird beim Systemstart automatisch ausgeführt. Und er wird jetztausgeführt.

Kafka-Dienst prüfen

Grundlegender Betrieb von Apache Kafka

Du hast die grundlegende Installation von Apache Kafka abgeschlossen und es läuft. Jetzt lernst du die grundlegende Bedienung von Apache Kafka über die Kommandozeile.

Alle Apache Kafka-Befehlszeilenwerkzeuge sind im Verzeichnis„/opt/kafka/bin“ verfügbar.

Um ein neues Kafka-Topic zu erstellen, verwendest du das Skript„kafka-topics.sh“ (siehe unten). In diesem Beispiel erstellen wir ein neues Kafka-Topic mit dem Namen„TestTopic“ mit 1 Replikation und Partition. Du solltest die folgende Ausgabe erhalten:„Created topic TestTopic„.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

Um die Liste der verfügbaren Topics auf deinem Kafka-Server zu überprüfen, führe den folgenden Befehl aus. Du solltest sehen, dass das„TestTopic„, das du gerade erstellt hast, auf dem Kafka-Server verfügbar ist.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Thema erstellen und Thema auflisten

Nachdem du das Kafka-Topic erstellt hast, kannst du mit den Standardbefehlen„kafka-console-producer.sh“ und„kafka-console-consumer.sh“ versuchen, Daten auf Apache Kafka zu schreiben und zu streamen.

Das Skript„kafka-console-producer.sh“ ist ein Kommandozeilenprogramm, das zum Schreiben von Daten in Kafka-Themen verwendet werden kann. Und das Skript„kafka-console-consumer.sh“ wird zum Streamen von Daten aus dem Terminal verwendet.

In der aktuellen Shell-Sitzung führst du den folgenden Befehl aus, um den Kafka Console Producer zu starten. Außerdem musst du das Kafka-Topic angeben. In diesem Beispiel verwenden wir das„TestTopic„.

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

Als Nächstes öffnest du eine andere Shell oder ein Terminal und verbindest dich mit dem Apache Kafka Server. Führe dann den folgenden Befehl aus, um den Apache Kafka Consumer zu starten. Achte darauf, dass du hier das Kafka-Topic angibst.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

Jetzt kannst du beliebige Nachrichten aus der Kafka Console Producer eingeben und die Nachrichten werden automatisch auf der Kafka Console Consumer angezeigt und gestreamt.

Stream-Nachrichten

Jetzt kannst du einfach„Strg+c“ drücken, um die Kafka Console Producer und Consumer zu verlassen.

Eine weitere grundlegende Kafka-Operation, die du kennen solltest, ist das Löschen eines Topics in Kafka. Das kannst du auch mit dem Kommandozeilenprogramm„kafka-topics.sh“ machen.

Wenn du das Topic„TestTopic“ löschen willst, kannst du den folgenden Befehl verwenden. Jetzt wird das„TestTopic“ von deinem Kafka-Server entfernt.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Import/Export deiner Daten als Stream mit dem Kafka Connect Plugin

Du hast die grundlegende Funktionsweise von Apache Kafka kennengelernt, indem du Topics erstellt und Nachrichten mit Hilfe der Kafka Console Producer und Consumer gestreamt hast. Jetzt lernst du, wie du mit dem „Kafka Connect“-Plugin Nachrichten aus einer Datei streamen kannst. Dieses Plugin ist in der Standardinstallation von Kafka verfügbar. Standard-Plugins für Kafka findest du im Verzeichnis„/opt/kafka/libs„.

Bearbeite die Konfigurationsdatei„/opt/kafka/config/connect-standalone.properties“ mit dem nano-Editor.

sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Füge die folgende Konfiguration in die Datei ein. Dadurch wird das Kafka Connect Plugin aktiviert, das im Verzeichnis „/opt/kafka/libs“ verfügbar ist.

plugin.path=libs/connect-file-3.2.0.jar

Wenn du fertig bist, speichere und schließe die Datei.

Als Nächstes erstellst du eine neue Beispieldatei, die du importieren und an Kafka streamen wirst. Basierend auf den Apache Kafka-Konfigurationsdateien musst du die Datei„test.txt“ im Kafka-Installationsverzeichnis„/opt/kafka“ erstellen.

Führe den folgenden Befehl aus, um eine neue Datei„/opt/kafka/test.txt“ zu erstellen.

sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt

Führe im Arbeitsverzeichnis„/opt/kafka“ den folgenden Befehl aus, um den Kafka-Connector im Standalone-Modus zu starten.

Außerdem fügen wir hier drei weitere Konfigurationsdateien als Parameter hinzu. Alle diese Dateien enthalten die Grundkonfiguration, in der die Daten gespeichert werden, in welchem Topic und welche Datei verarbeitet wird. Der Standardwert dieser Konfigurationen ist, dass die Daten im Thema „connect-test“ mit der Quelldatei „test.txt“, die du gerade erstellt hast, zur Verfügung stehen werden.

Du wirst eine Menge der Ausgabemeldungen von Kafka sehen.

cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

Öffne nun eine weitere Terminal-Shell/Sitzung und führe den folgenden Befehl aus, um die Kafka Console Consumer zu starten. In diesem Beispiel werden die Datenströme unter dem Topic„connect-test“ verfügbar sein.

Jetzt siehst du, dass die Daten aus der Datei„test.txt“ auf deine aktuelle Console Consumer-Shell gestreamt werden.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Wenn du versuchst, der Datei„test.txt“ eine weitere Nachricht hinzuzufügen, wirst du sehen, dass die Nachricht automatisch auf den Kafka Console Consumer gestreamt wird.

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

Daten aus einer Datei über das Plugin Kafka streamen

Fazit

In diesem Tutorial hast du gelernt, wie du Apache Kafka für die Stream-Verarbeitung und den Message Broker auf dem Ubuntu 22.04 System installierst. Du hast auch die grundlegende Konfiguration von Kafka auf dem Ubuntu-System gelernt. Außerdem hast du die grundlegenden Funktionen von Apache Kafka Producer und Consumer kennengelernt. Zum Schluss hast du auch gelernt, wie du Nachrichten oder Ereignisse aus einer Datei an Apache Kafka streamst.

Das könnte dich auch interessieren …