Installer et configurer Kafka


Pourquoi Kafka ?

Apache Kafka est un système de messagerie distribué conçu pour gérer des flux de données en temps réel. Il est massivement utilisé dans les architectures modernes orientées évènements, notamment dans les domaines du traitement de données, de la cybersécurité, du monitoring, de la finance, ou encore de l’IoT.

Kafka permet de produire, stocker et consommer des données sous forme de flux d’événements. Contrairement à une base de données ou une file d’attente classique, Kafka est hautement scalable, tolérant aux pannes, et peut servir des milliers de consommateurs simultanés sans perte de performance.


Architecture de Kafka

Kafka est composé de plusieurs éléments clés :


     +------------------+           +------------------+
     |     Producer     |           |     Producer     |
     +--------+---------+           +---------+--------+
              |                               |
              v                               v
          +---------------------------------------+
          |              Kafka Cluster            |
          |  +-----------+   +-----------+        |
          |  |  Broker 1 |   |  Broker 2 |  ...    |
          |  +-----------+   +-----------+        |
          +-----------------+---------------------+
                            |
                            v
                     +-------------+
                     |   Consumer  |
                     +-------------+
  

Pré-requis

Avant d’installer Kafka, assurez-vous que votre machine répond aux conditions suivantes :

Installation de Java

Kafka nécessite une JVM (Java Virtual Machine). Vous pouvez installer Java avec la commande suivante :

sudo apt update
sudo apt install openjdk-17-jdk -y

Vérifiez que Java est correctement installé avec :

java -version

Téléchargement et extraction de Kafka

Rendez-vous sur le site officiel de Kafka pour télécharger la dernière version :
kafka.apache.org/downloads.

Ou utilisez les lignes suivantes :

wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xvzf kafka_2.13-3.7.0.tgz
cd kafka_2.13-3.7.0

Lancement de Zookeeper

Kafka nécessite Zookeeper pour gérer le cluster, la coordination entre les brokers et l’état des consommateurs. Kafka est livré avec un script pour lancer un Zookeeper en local :

bin/zookeeper-server-start.sh config/zookeeper.properties

Vous pouvez également le lancer en arrière-plan :

bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log 2>&1 &

Lancement du broker Kafka

Une fois Zookeeper en marche, vous pouvez démarrer Kafka :

bin/kafka-server-start.sh config/server.properties

Création d’un topic

Kafka utilise des topics pour organiser les messages. Voici comment créer un topic nommé data-events :

bin/kafka-topics.sh --create \
  --topic data-events \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 1

Kafka vous renverra un message de confirmation si la création a réussi. Pour voir les topics existants :

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

Exploration des fichiers de configuration

Le fichier de configuration principal de Kafka est config/server.properties. Voici quelques lignes importantes :

broker.id=0
log.dirs=/tmp/kafka-logs
zookeeper.connect=localhost:2181
listeners=PLAINTEXT://localhost:9092
log.retention.hours=168

Utilisation de Docker (optionnel)

Si vous préférez utiliser Docker pour éviter d’installer Kafka manuellement :

version: '3'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.6.0
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181

  kafka:
    image: confluentinc/cp-kafka:7.6.0
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

Puis lancez avec :

docker-compose up -d

Conseils pour le développement


Conclusion

Kafka est un composant fondamental pour le traitement distribué de données. Vous venez d’installer un broker Kafka, configuré Zookeeper, et appris à créer un topic.

Dans le prochain tutoriel, nous verrons comment consommer ces messages via Python en utilisant la librairie kafka-python, et plus tard, comment en produire depuis une application.