Rééquilibrage d'un cluster Kafka

Rééquilibrez les clusters Kafka Big Data Service pour définir le nombre de copies du sujet sur l'ensemble du cluster.

Dans un cluster Kafka, les brokers assurent une haute disponibilité pour traiter les nouveaux événements. Kafka, tolérant les pannes, les répliques des messages sont conservées sur chaque broker et mises à disposition en cas de panne. A l'aide du facteur de réplication, vous pouvez définir le nombre de copies de la rubrique dans le cluster.

Ajoutez de nouveaux brokers ou disques à un broker Kafka existant en affectant un ID de broker, des processus d'écoute et un répertoire de journalisation uniques à partir des configurations Ambari pour Kafka. Toutefois, aucune partition de données des rubriques existantes du cluster n'est affectée à ces brokers/disques. Sauf si vous déplacez les partitions ou créez de nouveaux sujets, les courtiers ne feront pas beaucoup de travail. Pour résoudre ce problème, l'outil kafka-reassign-partitions peut être utilisé.

Création du fichier JSON de sujets à déplacer

Créez un fichier JSON topics-to-move pour indiquer les rubriques à réaffecter.

topics-to-move indique à l'outil kafka-reassign-partitions les partitions à examiner lors de la génération d'une proposition pour la configuration de réaffectation. Vous devez créer le fichier JSON topics-to-move de toutes pièces. Le format du fichier est le suivant :

{"topics": [{"topic": "topic1"}, {"topic": "topic2"}], "version":1 }

Pour plus d'informations sur la création du fichier JSON topics-to-move, reportez-vous à Exécution des partitions de réaffectation avec kafka-reassign-partitions-tool.

JSON de configuration de réaffectation

Ce fichier JSON est un fichier de configuration qui contient les paramètres utilisés dans le processus de réaffectation. Vous créez ce fichier, mais une proposition pour son contenu est générée par l'outil. Lorsque l'outil kafka-reasssign-partitions est exécuté avec l'option --generate, il génère une configuration proposée qui peut être affinée et enregistrée en tant que fichier JSON. La création du fichier de cette manière correspond au JSON de configuration de réaffectation. Pour générer une proposition, l'outil requiert un fichier topics-to-move en entrée. Le format du fichier est le suivant :

{"version":1,
 "partitions":
   [{"topic":"topic1","partition":1001,"replicas":[1001,1002],"log_dirs":["any","any"]},
    {"topic":"topic1","partition":1002,"replicas":[1002,1001],"log_dirs":["any","any"]},
    {"topic":"topic2","partition":1003,"replicas":[1002,1001],"log_dirs":["any","any"]}]
}

Pour plus d'informations sur la création du fichier JSON topics-to-move, reportez-vous à Exécution des partitions de réaffectation avec kafka-reassign-partitions-tool.

Propriétés de configuration de la réaffectation

La configuration de réaffectation contient plusieurs propriétés.

Propriétés Description
topic Spécifie la rubrique.
partition Spécifie la partition.
replicas Spécifie les brokers auxquels la partition sélectionnée est affectée. Les courtiers sont répertoriés dans l'ordre, ce qui signifie que le premier courtier de la liste est toujours le leader de cette partition. Changez l'ordre des courtiers pour résoudre les problèmes d'équilibrage des leaders parmi les courtiers. Modifiez les ID de courtier pour réaffecter des partitions à différents courtiers.
log_dirs Indique le répertoire de journalisation des brokers. Les répertoires de journaux sont répertoriés dans le même ordre que les brokers. Par défaut, any est indiqué comme répertoire de journalisation, ce qui signifie que le broker est libre de sélectionner l'emplacement de la réplique. Par défaut, l'implémentation actuelle du broker sélectionne le répertoire de journalisation à l'aide d'un algorithme de tourniquet. Un chemin absolu commençant par / peut être utilisé pour définir explicitement l'emplacement de stockage de la réplique de partition.

Exécution des partitions de réaffectation avec kafka-reassign-partitions-tool

  • Pour un cluster Kafka avec de grandes données, utilisez cet outil avec soin. Pour déplacer de nombreuses partitions, nous vous recommandons d'exécuter l'outil par lots de trois ou quatre partitions à la fois.
  • Assurez-vous que les brokers sont en bon état avant d'exécuter cet outil.
  • Cet outil ne peut pas être utilisé pour créer une réplique non synchronisée dans la partition leader.
  • Redistribuez la charge lorsque le système a une capacité de 70 %.
  1. SSH vers l'un des noeuds de broker du cluster Big Data Service. kafka-reassign-partitions-tool se trouve dans /usr/odh/current/kafka-broker/bin.
  2. Créez un fichier JSON topics-to-move qui indique les rubriques à réaffecter. Utilisez le format suivant :
    {"topics":  [{"topic": "topic1"},
                 {"topic": "topic2"}],
     "version":1
    }
  3. Générez le contenu du fichier JSON de configuration de réaffectation à l'aide de la commande suivante :
    kafka-reassign-partitions --topics-to-move-json-file <path to topics to move.json> --bootstrap-server <bootstrap servers> --generate

    La sortie affiche la répartition des répliques de partition sur vos brokers actuels, suivie d'une configuration de réaffectation de partition proposée.

    Current partition replica assignment
    {"version":1,
     "partitions":
       [{"topic":"topic2","partition":1,"replicas":[1002,1003],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":0,"replicas":[1001,1002],"log_dirs":["any","any"]},
        {"topic":"topic2","partition":0,"replicas":[1001,1002],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":2,"replicas":[1003,1001],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":1,"replicas":[1002,1003],"log_dirs":["any","any"]}]
    }
     
    Proposed partition reassignment configuration
     
    {"version":1,
     "partitions":
       [{"topic":"mytopic1","partition":0,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic1","partition":2,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic2","partition":1,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic1","partition":1,"replicas":[1005,1004],"log_dirs":["any","any"]},
        {"topic":"mytopic2","partition":0,"replicas":[1005,1004],"log_dirs":["any","any"]}]
    }

    Dans cet exemple, l'outil a proposé une configuration qui réaffecte les partitions existantes sur les courtiers 1, 2 et 3 aux courtiers 4 et 5.

  4. Copiez et collez la configuration de réaffectation de partition proposée dans un fichier JSON vide.
  5. Vérifiez et, si nécessaire, modifiez la configuration de la réaffectation suggérée. Enregistrez le fichier.
  6. Démarrez le processus de redistribution avec la commande suivante :
    kafka-reassign-partitions --reassignment-json-file <path to reassignment configuration.json> --bootstrap-server <bootstrap servers> --execute
  7. Pour vérifier le mouvement de la partition, exécutez la commande suivante :
    kafka-reassign-partitions --reassignment-json-file <path to reassignment configuration.json> --bootstrap-server <bootstrap servers> --verify

    L'outil imprime le statut de réaffectation de toutes les partitions.

    Status of partition reassignment: 
    Reassignment of partition topic2-1 completed successfully 
    Reassignment of partition topic1-0 completed successfully 
    Reassignment of partition topic2-0 completed successfully 
    Reassignment of partition topic1-2 completed successfully 
    Reassignment of partition topic1-1 completed successfully