Apache Kafka est un système de gestion de flux de données distribué largement utilisé pour le traitement de données en continu en temps réel. Dans ce guide, nous vous montrerons comment installer Apache Kafka sur un serveur Ubuntu 22.04.

Installation de Java OpenJDK

Avant d’installer Apache Kafka, nous devons installer Java OpenJDK sur notre système Ubuntu. Apache Kafka est écrit en Scala et Java, et au moment de la rédaction de cet article, il nécessite au moins Java OpenJDK version 11.

Pour installer Java OpenJDK 11, ouvrez un terminal et exécutez les commandes suivantes :

sudo apt update
sudo apt installdefault-jdk

Une fois l’installation terminée, vérifiez que Java est correctement installé en exécutant la commande suivante :

java -version

Vous devriez voir la version Java OpenJDK 11 installée sur votre système.

Installation d’Apache Kafka

Maintenant que nous avons Java OpenJDK installé, procédons à l’installation d’Apache Kafka. Nous l’installerons manuellement en utilisant le package binaire.

  1. Créez un nouvel utilisateur système nommé “kafka” avec la commande suivante :
sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka
  1. Téléchargez le package binaire Apache Kafka en utilisant la commande suivante :
sudo curl -fsSLo kafka.tgz https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
  1. Extrayez le package téléchargé et déplacez-le dans le répertoire “/opt/kafka” :
tar -xzf kafka.tgz
sudo mv kafka_2.13-3.2.0 /opt/kafka
  1. Changez la propriété du répertoire d’installation de Kafka pour l’utilisateur “kafka” :
sudo chown -R kafka:kafka /opt/kafka
  1. Créez un répertoire de logs pour Kafka et modifiez le fichier de configuration de Kafka :
sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

Dans le fichier de configuration, changez l’emplacement par défaut des logs de Kafka en “/opt/kafka/logs” :

log.dirs=/opt/kafka/logs

Sauvegardez et fermez le fichier.

Configuration d’Apache Kafka en tant que service

Maintenant qu’Apache Kafka est installé, nous allons le configurer en tant que service systemd. Cela nous permettra de démarrer, arrêter et redémarrer Kafka en utilisant la commande systemctl.

Pour configurer Kafka en tant que service, nous devons d’abord configurer le service ZooKeeper. ZooKeeper est utilisé par Kafka pour maintenir l’élection du contrôleur, les configurations des sujets, les listes de contrôle d’accès (ACL) et l’adhésion aux clusters Kafka.

  1. Créez un nouveau fichier de service systemd pour ZooKeeper :
sudo nano /etc/systemd/system/zookeeper.service

Ajoutez la configuration suivante au fichier :

[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

Sauvegardez et fermez le fichier.

  1. Créez un nouveau fichier de service pour Apache Kafka :
sudo nano /etc/systemd/system/kafka.service

Ajoutez la configuration suivante au fichier :

[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

Sauvegardez et fermez le fichier.

  1. Rechargez le gestionnaire systemd pour appliquer les nouveaux services :
sudo systemctl daemon-reload
  1. Démarrez et activez le service ZooKeeper :
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
  1. Démarrez et activez le service Apache Kafka :
sudo systemctl enable kafka
sudo systemctl start kafka
  1. Vérifiez l’état des services ZooKeeper et Apache Kafka :
sudo systemctl status zookeeper
sudo systemctl status kafka

Vous devriez voir que les deux services sont activés et en cours d’exécution.

Opérations de base d’Apache Kafka

Maintenant qu’Apache Kafka est installé et en cours d’exécution, explorons quelques-unes des opérations de base que vous pouvez effectuer avec Kafka.

Création d’un sujet Kafka

Pour créer un nouveau sujet Kafka, utilisez le script kafka-topics.sh. Ce script vous permet de créer, de lister et de supprimer des sujets.

Ouvrez un terminal et exécutez la commande suivante pour créer un nouveau sujet nommé “TestTopic” avec 1 réplica et 1 partition :

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

Vous devriez voir la sortie “Created topic TestTopic” indiquant que le sujet a été créé avec succès.

Vérification des sujets

Pour vérifier la liste des sujets disponibles sur votre serveur Kafka, exécutez la commande suivante :

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

Vous devriez voir le “TestTopic” répertorié parmi les sujets disponibles.

Producteur et consommateur de la console Kafka

Le producteur et le consommateur de la console Kafka sont des utilitaires en ligne de commande qui vous permettent d’écrire et de diffuser des données vers et depuis des sujets Kafka.

Pour démarrer le producteur de la console Kafka, utilisez la commande suivante :

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

Cela ouvrira une nouvelle coquille où vous pourrez taper des messages à envoyer au sujet “TestTopic”.

Pour démarrer le consommateur de la console Kafka, ouvrez un autre terminal et exécutez la commande suivante :

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

Cela commencera à diffuser des messages depuis le sujet “TestTopic” et à les afficher dans le terminal.

Vous pouvez maintenant taper des messages dans la coquille du producteur de la console Kafka, et ils apparaîtront automatiquement dans la coquille du consommateur de la console Kafka.

Pour arrêter le producteur et le consommateur de la console Kafka, appuyez sur “Ctrl + C”.

Suppression d’un sujet Kafka

Si vous souhaitez supprimer un sujet Kafka, vous pouvez utiliser le script kafka-topics.sh.

Exécutez la commande suivante pour supprimer le sujet “TestTopic” :

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

Le “TestTopic” sera supprimé de votre serveur Kafka.

Importer/Exporter vos données en tant que flux en utilisant le plugin Kafka Connect

Kafka Connect est un plugin disponible dans Apache Kafka qui vous permet d’importer et d’exporter des flux de données de diverses sources vers Kafka.

  1. Modifiez le fichier de configuration de Kafka Connect :
sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Ajoutez la configuration suivante pour activer le plugin Kafka Connect :

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

Sauvegardez et fermez le fichier.

  1. Créez un fichier d’exemple à importer et à diffuser vers Kafka :
sudo -u kafka echo -e "Test message from filenTest using Kafka connect from file" > /opt/kafka/test.txt
  1. Démarrez Kafka Connect en mode autonome :
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

Cela démarrera le plugin Kafka Connect et diffusera les données du fichier “test.txt” vers le sujet Kafka spécifié dans les fichiers de configuration.

  1. Ouvrez un autre terminal et démarrez le consommateur de la console Kafka pour voir les données diffusées :
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Vous verrez maintenant les données du fichier “test.txt” diffusées vers le consommateur de la console Kafka.

Pour plus d’informations sur Apache Kafka et comment il peut bénéficier à votre entreprise, visitez Shape.host. Shape.host fournit des solutions fiables et évolutives de Cloud VPS, y compris l’hébergement cloud pour Apache Kafka.