Cette rubrique répond aux questions opérationnelles courantes concernant Kafka sur E-MapReduce (EMR), en couvrant la gestion des journaux, le contrôle des composants, le diagnostic des erreurs et la planification de la capacité.
Comment nettoyer les journaux de sortie du composant Kafka ?
Si les journaux de sortie du composant Kafka consomment trop d'espace disque, supprimez directement les fichiers de journalisation du répertoire des journaux.
Les composants liés à Kafka stockent les journaux sous $LOG_DIR_ROOT (par défaut : /mnt/disk1/log). Chaque composant dispose de son propre sous-répertoire :
| Composant | Répertoire des journaux |
|---|---|
| Kafka | $LOG_DIR_ROOT/kafka |
| Cruise Control | $LOG_DIR_ROOT/cruise-control |
| Schema Registry | $LOG_DIR_ROOT/kafka-schema-registry |
| REST Proxy | $LOG_DIR_ROOT/kafka-rest-proxy |
Accédez au répertoire concerné et supprimez les fichiers de journalisation dont vous n'avez plus besoin.
Comment nettoyer les journaux de sortie du composant Kafka Manager ?
Accédez à $LOG_DIR_ROOT/kafka-manager (par défaut : /mnt/disk1/log/kafka-manager) et supprimez les fichiers de journalisation.
Puis-je arrêter le composant Kafka Manager ?
Oui. Kafka ne dépend pas de Kafka Manager pour les opérations de lecture et d'écriture ; l'arrêt de ce composant n'affecte donc pas votre service Kafka.
Si vous n'avez pas intégré une autre plateforme de gestion Kafka, maintenez Kafka Manager en cours d'exécution, car il constitue votre seule interface de gestion. Si vous disposez d'une alternative et que vous n'avez plus besoin de Kafka Manager, arrêtez-le depuis l'onglet Services de votre cluster dans la console EMR.
Comment résoudre l'erreur « Replication factor: 1 larger than available brokers: 0 » ?
Cette erreur peut avoir deux causes possibles :
Le processus broker s'est arrêté. Consultez les journaux du broker pour identifier la défaillance et redémarrez le processus broker.
La configuration des hôtes ZooKeeper est incorrecte. Dans la console EMR, mettez à jour le paramètre Cluster Zookeeper Hosts afin qu'il corresponde à la valeur de
kafka.manager.zookeeper.hosts.
Comment résoudre l'erreur « java.net.BindException: Address already in use (Bind failed) » ?
Le port Java Management Extensions (JMX) est déjà utilisé. Spécifiez un autre port JMX avant d'exécuter la commande :
JMX_PORT=10101 kafka-topics.sh --bootstrap-server core-1-1:9092 --list
Comment résoudre l'erreur « current leader's lastest offset xxxx is less than replica's lastest offset xxxxxx » ?
Cette erreur signifie que le leader actuel est en retard par rapport à un réplica, ce qui bloque une élection de leader propre.
Avant de poursuivre, confirmez que toutes les données ont été consommées ou que la perte de données est acceptable. Ensuite :
Définissez
unclean.leader.election.enablesurtruesur le composant broker Kafka.Redémarrez le composant broker Kafka.
Après le redémarrage, rétablissez
unclean.leader.election.enablesurfalse.
Que faire si le disque stockant les données Kafka dans le répertoire des journaux est plein ?
Lorsque le disque du répertoire des journaux est plein, ce dernier passe hors ligne. Suivez les étapes décrites dans Effectuer des opérations O&M lorsque l'espace disque d'un cluster EMR Kafka est saturé pour récupérer le service.
Comment résoudre l'erreur « Too many open files » ?
Cette erreur survient lorsque le nombre de descripteurs de fichiers ouverts dépasse la limite du système, généralement en raison d'un grand nombre de partitions ou de connexions réseau.
Augmentez la limite de descripteurs de fichiers dans /etc/security/limits.conf. Ajoutez ou mettez à jour les lignes suivantes à la fin du fichier :
* soft nofile <new-limit>
* hard nofile <new-limit>
Remplacez <new-limit> par une valeur adaptée à votre charge de travail. Après avoir enregistré le fichier, redémarrez les composants concernés.
Comment estimer le nombre de partitions requises pour un topic Kafka ?
Utilisez l'approche suivante :
Mesurez le débit du producteur par partition. Exécutez un test de charge pour obtenir le débit (en Mo/s) qu'une seule partition peut soutenir dans les limites de votre latence cible.
Estimez votre trafic attendu. Déterminez le taux d'ingestion maximal que votre topic doit gérer.
Calculez le nombre de partitions requis. Sur la base du débit mesuré par partition et du trafic métier attendu, calculez le nombre de partitions nécessaires pour le topic.
Ajustez en fonction du parallélisme des consommateurs. Un plus grand nombre de partitions permet à davantage de consommateurs de lire en parallèle. Si les consommateurs prennent du retard, augmentez le nombre de partitions pour atteindre votre objectif de latence de consommation.