Comment Créer et Gérer des Topics Kafka en Ligne de Commande

Ce guide d'expert fournit un tutoriel complet et détaillé sur la gestion des topics Kafka exclusivement via l'interface de ligne de commande (CLI). Apprenez les commandes essentielles utilisant l'utilitaire `kafka-topics.sh` pour les tâches administratives cruciales : créer des topics avec des partitions et des facteurs de réplication définis, vérifier les configurations via la description, augmenter le nombre de partitions en toute sécurité et effectuer la suppression de topics. Maîtrisez ces commandes pratiques pour assurer une administration de cluster Kafka robuste et efficace.

38 vues

Comment créer et gérer des topics Kafka en ligne de commande

Apache Kafka est une plateforme distribuée de streaming d'événements souvent utilisée pour les pipelines de données à haut débit, l'analyse en temps réel et la communication entre microservices. L'unité organisationnelle fondamentale au sein de Kafka est le Topic, un nom de catégorie ou de flux auquel les enregistrements sont publiés.

Bien qu'il existe des outils graphiques, la manière la plus robuste, fiable et courante d'interagir avec et de gérer l'infrastructure Kafka est directement via l'interface en ligne de commande (CLI). Maîtriser ces commandes essentielles est crucial pour les administrateurs et les développeurs responsables du maintien d'un cluster Kafka sain et efficace. Ce guide fournit un tutoriel étape par étape sur l'utilisation du script kafka-topics.sh pour effectuer les tâches de gestion de topic les plus courantes.

Prérequis et configuration

Pour exécuter les commandes de ce guide, vous devez avoir accès à une machine sur laquelle les binaires Kafka sont installés. Toutes les opérations de gestion de topic sont effectuées à l'aide de l'utilitaire kafka-topics.sh, généralement trouvé dans le répertoire bin de votre installation Kafka.

Toutes les commandes nécessitent l'adresse d'au moins un broker Kafka, spécifiée à l'aide du flag --bootstrap-server. Si vous utilisez une version plus ancienne de Kafka (avant la 2.2), vous pourriez encore vous appuyer sur le flag --zookeeper, mais --bootstrap-server est la norme recommandée et moderne.

Pour les exemples ci-dessous, nous supposerons que le broker s'exécute localement sur le port par défaut :

# Adresse de broker standard (placeholder)
BROKER_ADDRESS="localhost:9092"

1. Créer un nouveau topic Kafka

La création d'un topic nécessite de définir son nom, ainsi que deux paramètres essentiels qui dictent son comportement et sa tolérance aux pannes : le nombre de partitions et le facteur de réplication.

Paramètres essentiels

  • --topic <nom> : Le nom du topic.
  • --partitions <N> : Le nombre de partitions en lesquelles le topic sera divisé. Les partitions sont les unités de parallélisme et d'ordonnancement au sein d'un topic.
  • --replication-factor <N> : Le nombre de copies des données qui seront maintenues sur différents brokers. Un facteur de réplication de 1 signifie aucune redondance.

Exemple de commande : Création de sales-data

Cette commande crée un topic nommé sales-data avec 3 partitions et un facteur de réplication de 2 (ce qui signifie que 2 copies de chaque partition existeront dans le cluster).

kakfa-topics.sh --create --topic sales-data \n  --bootstrap-server $BROKER_ADDRESS \n  --partitions 3 \n  --replication-factor 2

Astuce : Dans un environnement de production avec N brokers, un facteur de réplication de 3 est souvent recommandé pour une haute disponibilité (permettant la perte de deux brokers avant que la perte de données ne se produise), et le nombre de partitions doit être ajusté en fonction du débit anticipé et des besoins de parallélisme des consommateurs.

2. Lister tous les topics

Pour afficher tous les topics actuellement disponibles dans le cluster Kafka, utilisez le flag --list.

Exemple de commande

kafka-topics.sh --list --bootstrap-server $BROKER_ADDRESS

Exemple de sortie :

sales-data
logistics-stream
__consumer_offsets

3. Décrire la configuration des topics

Vérifier la configuration existante, le nombre de partitions et l'affectation des brokers pour un topic spécifique est essentiel pour le dépannage et la vérification. Utilisez le flag --describe.

Exemple de commande : Description de sales-data

kafka-topics.sh --describe --topic sales-data \n  --bootstrap-server $BROKER_ADDRESS

Interprétation de la sortie :

La sortie montre la configuration au niveau du topic et au niveau de la partition :

Topic: sales-data  PartitionCount: 3 ReplicationFactor: 2 Configs:
  Topic: sales-data  Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
  Topic: sales-data  Partition: 1 Leader: 2 Replicas: 2,0 Isr: 2,0
  Topic: sales-data  Partition: 2 Leader: 0 Replicas: 0,1 Isr: 0,1
  • Leader : Le broker actuellement responsable du traitement des lectures/écritures pour cette partition.
  • Replicas : La liste des brokers détenant une copie de cette partition.
  • Isr (In-Sync Replicas) : Le sous-ensemble de réplicas entièrement synchronisés avec le Leader. La haute disponibilité exige que le Leader fasse partie des ISR.

4. Modifier les topics existants

Kafka offre des mécanismes limités pour modifier les topics après leur création. Les deux tâches de modification les plus courantes sont l'augmentation du nombre de partitions et la surcharge des paramètres de configuration par défaut du broker.

A. Augmentation des partitions

Les partitions ne peuvent qu'être augmentées, jamais diminuées. L'augmentation des partitions aide à faire évoluer le parallélisme des consommateurs.

Avertissement : L'augmentation des partitions modifie la façon dont les messages sont mappés (hachés) aux partitions. Si vos producteurs dépendent de garanties d'ordonnancement basées sur les clés, l'augmentation des partitions peut rompre la livraison ordonnée pour les clés existantes.

Si sales-data a actuellement 3 partitions, nous pouvons l'augmenter à 5 :

kafka-topics.sh --alter --topic sales-data \n  --bootstrap-server $BROKER_ADDRESS \n  --partitions 5

B. Modification de la configuration spécifique au topic

Vous pouvez remplacer les paramètres globaux du broker (comme le temps de rétention des messages ou les politiques de nettoyage) pour des topics individuels en utilisant le flag --config.

Exemple : Définir un temps de rétention des messages de 24 heures (86400000 millisecondes) pour sales-data.

kafka-topics.sh --alter --topic sales-data \n  --bootstrap-server $BROKER_ADDRESS \n  --config retention.ms=86400000

Pour supprimer un remplacement de configuration spécifique et revenir au paramètre par défaut du broker, utilisez le flag --delete-config :

kafka-topics.sh --alter --topic sales-data \n  --bootstrap-server $BROKER_ADDRESS \n  --delete-config retention.ms

5. Supprimer un topic Kafka

Les topics qui ne sont plus utilisés doivent être correctement supprimés pour récupérer de l'espace disque et maintenir l'hygiène du cluster.

Activer la suppression des topics

Par défaut, les brokers Kafka peuvent désactiver la suppression des topics pour des raisons de sécurité. Avant de pouvoir supprimer un topic, assurez-vous que le paramètre suivant est activé dans votre fichier server.properties sur tous les brokers :

delete.topic.enable=true

Exemple de commande : Suppression de old-stream

Utilisez le flag --delete pour lancer la suppression du topic. La suppression des topics est souvent asynchrone, ce qui signifie que la commande soumet la requête et que la suppression se produit en arrière-plan.

kafka-topics.sh --delete --topic old-stream \n  --bootstrap-server $BROKER_ADDRESS

Sortie de confirmation :

Deletion of topic old-stream initiated successfully.

Résumé des commandes de gestion des topics

Action Flag(s) Objectif Paramètres d'exemple
Créer --create Initialiser un nouveau topic. --partitions 5 --replication-factor 3
Lister --list Afficher tous les topics du cluster. N/A
Décrire --describe Afficher la configuration et la disposition actuelles. --topic my-topic
Modifier (Partitions) --alter Augmenter le nombre de partitions. --partitions N (N > nombre actuel)
Modifier (Config) --alter --config Remplacer les valeurs par défaut du broker pour un topic spécifique. --config retention.ms=...
Supprimer --delete Supprimer définitivement un topic. --topic my-topic

Conclusion et prochaines étapes

La ligne de commande reste l'interface la plus puissante et la plus flexible pour gérer votre cluster Kafka. En maîtrisant l'utilitaire kafka-topics.sh, vous obtenez un contrôle granulaire sur les paramètres de création des topics, les remplacements de configuration et les actions administratives nécessaires telles que la suppression et la description.

Prochaines étapes :

  1. Pratiquez ces commandes dans un environnement de développement ou de staging.
  2. Explorez les options de configuration avancées à l'aide de la commande --describe pour voir la liste complète des propriétés configurables (par exemple, cleanup.policy, max.message.bytes).
  3. Apprenez les commandes CLI correspondantes pour les tests de producteur et de consommateur (kafka-console-producer.sh et kafka-console-consumer.sh).