Apache Kafka ist eine Open-Source-Stream-Verarbeitungs- und Message-Broker-Softwareanwendung, mit der Sie Datenströme über eine verteilte Streaming-Plattform verarbeiten können. Es fungiert als Nachrichtensystem zwischen dem Sender und dem Empfänger. Apache Kafka basiert auf einer verteilten Architektur und bietet daher eine hohe Fehlertoleranz und Skalierbarkeit. Es wurde ursprünglich von LinkedIn entwickelt, ist aber jetzt ein Projekt der Apache Software Foundation. Apache Kafka bietet eine Schnittstelle zum Lesen und Schreiben von Daten in Kafka-Cluster oder zum Importieren und Exportieren von Daten in und aus Drittsystemen.
In diesem Beitrag erklären wir, wie Apache Kafka auf Rocky Linux 8 installiert wird.
Voraussetzungen
- Ein Server, auf dem RockyLinux 8 auf der Atlantic.Net Cloud Platform ausgeführt wird
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Rocky Linux 8 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
dnf update -y
Schritt 2 – Java installieren
Apache Kafka ist eine Java-basierte Anwendung, daher muss Java auf Ihrem Server installiert sein. Wenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:
dnf install java-11-openjdk-devel -y
Sobald Java installiert ist, überprüfen Sie die Java-Installation mit dem folgenden Befehl:
java --version
Sie erhalten die Java-Version in der folgenden Ausgabe:
openjdk 11.0.13 2021-10-19 LTSOpenJDK Runtime Environment 18.9 (Build 11.0.13+8-LTS)OpenJDK 64-Bit Server VM 18.9 (Build 11.0.13+8-LTS, gemischter Modus, Freigabe)Schritt 3 – Installieren Sie Apache Kafka auf Rocky Linux 8
Gehen Sie zunächst auf die offizielle Apache-Website und laden Sie die neueste Version von Apache Kafka mit dem Befehl wget herunter:
wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgzSobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:
tar -xvzf kafka_2.13-3.0.0.tgzSobald die heruntergeladene Datei extrahiert ist, verschieben Sie das extrahierte Verzeichnis in das Verzeichnis /usr/local:
mv kafka_2.13-3.0.0/ /usr/local/kafkaWenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Schritt 4 – Systemd-Dienstdatei für Zookeeper und Kafka erstellen
Für die Produktionsumgebung wird empfohlen, eine systemd-Dienstdatei zu erstellen, um sowohl Zookeeper als auch Kafka im Hintergrund auszuführen.
Erstellen Sie zunächst eine systemd-Dienstdatei für Zookeeper mit dem folgenden Befehl:
nano /etc/systemd/system/zookeeper.serviceFügen Sie die folgenden Zeilen hinzu:
[Unit]Description=Apache Zookeeper serverDocumentation=http://zookeeper.apache.orgRequires=network.target remote-fs.targetAfter=network.target remote-fs.target[Service]Type=simpleExecStart=/usr/bin /bash /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.propertiesExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server- stop.shRestart=on-abnormal[Install]WantedBy=multi-user.targetSpeichern und schließen Sie die Datei und erstellen Sie dann eine systemd-Dienstdatei für Kafka mit dem folgenden Befehl:
nano /etc/systemd/system/kafka.serviceFügen Sie die folgenden Zeilen hinzu:
[Unit]Description=Apache Kafka ServerDocumentation=http://kafka.apache.org/documentation.htmlRequires=zookeeper.service[Service]Type=simpleEnvironment="JAVA_HOME=/usr/lib/jvm/jre-11- openjdk"ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.propertiesExecStop=/usr/bin/bash /usr/local/ kafka/bin/kafka-server-stop.sh[Install]WantedBy=multi-user.targetSpeichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reloadStarten Sie als Nächstes sowohl die Zookeeper- als auch die Kafka-Dienste und ermöglichen Sie ihnen, beim Systemneustart zu starten:
systemctl start zookeepersystemctl start kafkasystemctl enable zookeepersystemctl enable kafkaSie können auch beide Dienste mit dem folgenden Befehl überprüfen:
systemctl status zookeeper kafkaSie erhalten die folgende Ausgabe:
● zookeeper.service - Apache Zookeeper-Server Geladen:geladen (/etc/systemd/system/zookeeper.service; deaktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit 22.10.2021 07:51:56 UTC; Vor 42 Sekunden Dokumente:http://zookeeper.apache.org Haupt-PID:33802 (Java) Aufgaben:28 (Grenze:11411) Speicher:91,4 MB CGroup:/system.slice/zookeeper.service └─33802 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,676] INFO zookeeper.snapshot.compression.method =CHECKED (org.apache.zookeeper.>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,676] INFO Snapshotting:0x0 to /tmp /zookeeper/version-2/snapshot.0 (org.apache.z>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,679] INFO Snapshot geladen in 22 ms, höchste zxid ist 0x0, Digest ist 1371985504 (o>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,679] INFO Snapshotting:0x0 to /tmp/zookeeper/version-2/snapshot .0 (org.apache.z>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,683] INFO Schnappschuss in 3 ms (org.apache.zookeeper.server.ZooKeep erServer)Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,703] INFO zookeeper.request_throttler.shutdownTimeout =10000 (org.apache.zookee>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,741] INFO PrepRequestProcessor (sid:0) gestartet, reconfigEnabled=false (org.apach>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021- 10-22 07:51:58,764] INFO Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalMs=>Oct 22 07:51:58 RockyLinux8 bash[33802]:[2021-10-22 07:51:58,765] INFO ZooKeeper Audit ist deaktiviert . (org.apache.zookeeper.audit.ZKAuditProvid>Oct 22 07:52:12 RockyLinux8 bash[33802]:[2021-10-22 07:52:12,102] INFO Neue Protokolldatei erstellen:log.1 (org.apache. zookeeper.server.persistence.>● kafka.service – Apache Kafka Server Geladen:geladen (/etc/systemd/system/kafka.service; deaktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit 22.10.2021 07:52:09 UTC; vor 29 Sekunden Dokumente:http://kafka.apache.org/documentation.html Haupt-PID:34147 (Java) Aufgaben:69 (Limit:11411) Arbeitsspeicher:331,6 MB CGroup:/system.slice/ kafka.service └─34147 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy>Oct 22 07:52:14 RockyLinux8 bash[34147]:[2021-10-22 07:52:14,881] INFO [/config/changes-event-process-thread]:Starting (kafka.common.ZkNodeC>Oct 22 07:52:14 RockyLinux8 bash [34147]:[2021-10-22 07:52:14,899] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Starten des Socket-Servers> 22. Oktober 07:52:14 RockyLinux8 bash [34147]:[2021-10-22 07:52:14,981] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started data-plane acc>Oct 22 07:52:14 RockyLinux8 bash[34147]:[2021-10 -22 07:52:14,988] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Socket-Server gestartet> 22. Okt 07:52:15 RockyLinux8 bash[34147]:[2021-10-22 07:52:15,069] INFO Kafka Version:3.0.0 (org.apache.kafka.common.utils.AppInfoParser)Oct 22 07:52:15 RockyLinux8 bash[34147]:[2021-10-22 07:52:15,069] INFO Kafka commitId:8cb0a5e9d3441962 (org .apache.kafka.common.utils.AppInf>Oct 22 07:52:15 RockyLinux8 bash[34147]:[2021-10-22 07:52:15,069] INFO Kafka startTimeMs:1634889134988 (org.apache.kafka.Schritt 5 – Erstellen Sie ein Thema auf Kafka
Um Apache Kafka zu testen, müssen Sie mindestens ein Thema auf dem Server erstellen.
Wechseln Sie in das Verzeichnis Apache Kafka und erstellen Sie mit dem folgenden Befehl ein Testthema namens topic1:
cd /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic1Sie können Ihr erstelltes Thema jetzt mit dem folgenden Befehl überprüfen:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092Sie erhalten die folgende Ausgabe:
thema1Kafka bietet zwei APIs:Producer und Consumer. Der Produzent ist für die Erstellung von Ereignissen verantwortlich und der Konsument zeigt sie auf dem Bildschirm an:
Führen Sie zuerst den folgenden Befehl aus, um ein Ereignis mit dem Namen event1 zu erstellen, indem Sie den folgenden Befehl verwenden:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic event1Geben Sie einen Text ein, den Sie streamen und auf dem Verbraucher anzeigen möchten.
>Hallo, das ist meine erste VeranstaltungBeispielausgabe:
[2021-10-22 07:58:05,318] WARN [Producer clientId=console-producer] Fehler beim Abrufen von Metadaten mit Korrelations-ID 3:{event1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)Öffnen Sie ein anderes Terminal und führen Sie den folgenden Befehl aus, um die generierten Ereignisdaten in Echtzeit anzuzeigen:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic event1 --from-beginningSie erhalten die folgende Ausgabe:
Hallo, das ist meine erste VeranstaltungSchlussfolgerung
In der obigen Anleitung haben Sie gelernt, wie Sie Apache Kafka unter Rocky Linux 8 installieren. Weitere Informationen finden Sie auf der Apache Kafka-Dokumentationsseite. Beginnen Sie mit Apache Kafka auf VPS-Hosting von Atlantic.Net!