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