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
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
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“.
Der Apache Kafka-Dienst ist ebenfalls aktiviert und wird beim Systemstart automatisch ausgeführt. Und er wird jetztausgeführt.
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
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.
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
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.