79 votes

Comment changer les répliques du sujet kafka?

Après une rubrique Kafka créée par le producteur ou l'administrateur, comment changer le nombre de répliques de cette rubrique? (Augmenter ou diminuer le nombre de répliques.)

152voto

Pour augmenter le nombre de répliques pour un sujet donné, vous devez:

1. Spécifiez le supplément de réplicas dans un personnalisé réaffectation fichier json

Par exemple, vous pouvez créer augmentation de la réplication-facteur.json et de mettre ce contenu dans:

{"version":1,
  "partitions":[
     {"topic":"signals","partition":0,"replicas":[0,1,2]},
     {"topic":"signals","partition":1,"replicas":[0,1,2]},
     {"topic":"signals","partition":2,"replicas":[0,1,2]}
]}

2. Utiliser le fichier avec l'option --exécuter l'option de la kafka-réaffecter-partitions outil

[ou kafka-reassign-partitions.sh - en fonction de la kafka package]

Par exemple:

$ kafka-reassign-partitions --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute

3. Vérifier le facteur de réplication avec le kafka-sujets outil

[ou kafka-topics.sh - en fonction de la kafka package]

 $ kafka-topics --zookeeper localhost:2181 --topic signals --describe

Topic:signals   PartitionCount:3    ReplicationFactor:3 Configs:retention.ms=1000000000
Topic: signals  Partition: 0    Leader: 2   Replicas: 0,1,2 Isr: 2,0,1
Topic: signals  Partition: 1    Leader: 2   Replicas: 0,1,2 Isr: 2,0,1
Topic: signals  Partition: 2    Leader: 2   Replicas: 0,1,2 Isr: 2,0,1

Voir aussi: la partie de la documentation officielle qui décrit comment pour augmenter le facteur de réplication.

12voto

Artur Biesiadowski Points 2534

Edit: j'ai été prouvé d'être mal - s'il vous plaît vérifier l'excellente réponse de lukdumi.

Je pars de ma réponse originale à cette question par souci d'exhaustivité pour l'instant.

Je ne pense pas que vous le pouvez. Normalement, ce serait quelque chose comme

./kafka-topics.sh --zookeeper localhost:2181-modifier --sujet test2 --la réplication facteur 3

mais il est dit

L'Option "[réplication-factor]" ne peut pas être utilisé avec l'option"[modifier]"

C'est drôle que vous pouvez changer le nombre de partitions à la volée (ce qui est souvent extrêmement destructeur d'action lorsqu'il est effectué dans l'exécution), mais ne peut pas augmenter facteur de réplication, ce qui devrait être transparent. Mais rappelez-vous, c'est de 0,10, pas 10.0... Veuillez voir ici pour une demande d'amélioration https://issues.apache.org/jira/browse/KAFKA-1543

1voto

MilesHampson Points 803

Si vous avez beaucoup de partitions, utiliser kafka-reassign-partitions pour générer le fichier json requis par la réponse de Łukasz Dumiszewski (et la documentation officielle) peut être un gain de temps. Voici un exemple de réplication d'une rubrique 64 partitions de 1 à 2 serveurs sans avoir à spécifier toutes les partitions:

 expand_topic=TestTopic
current_server=111
new_servers=111,222
echo '{"topics": [{"topic":"'${expand_topic}'"}], "version":1}' > /tmp/topics-to-expand.json
/bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file /tmp/topics-to-expand.json --broker-list "${current_server}" --generate | tail -1 | sed s/\\[${current_server}\\]/\[${new_servers}\]/g | tee /tmp/topic-expand-plan.json
/bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file /tmp/topic-expand-plan.json --execute
/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic ${expand_topic}
 

Les sorties:

 Topic:TestTopic PartitionCount:64   ReplicationFactor:2 Configs:retention.ms=6048000
    Topic: TestTopic    Partition: 0    Leader: 111 Replicas: 111,222   Isr: 111,222
    Topic: TestTopic    Partition: 1    Leader: 111 Replicas: 111,222   Isr: 111,222
    ....
 

-3voto

SivaPhani Points 43

Pour augmenter le nombre de répliques pour un sujet donné, vous devez:

1. Spécifier les partitions supplémentaires pour le sujet déjà existant avec la commande ci-dessous(disons augmenter de 2 à 3)

bin/kafktopics.sh --zookeeper localhost:2181 --alter --topic topic-to-increase --partitions 3

2. Spécifiez le supplément de réplicas dans un personnalisé réaffectation fichier json

Par exemple, vous pouvez créer augmentation de la réplication-facteur.json et de mettre ce contenu dans:

{"version":1,
  "partitions":[
     {"topic":"topic-to-increase","partition":0,"replicas":[0,1,2]},
     {"topic":"topic-to-increase","partition":1,"replicas":[0,1,2]},
     {"topic":"topic-to-increase","partition":2,"replicas":[0,1,2]}
]}

3. Utiliser le fichier avec l'option --exécuter l'option de la kafka-réaffecter-partitions outil

bin/kafka-reassign-partitions --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute

4. Vérifier le facteur de réplication avec le kafka-sujets outil

bin/kafka-topics --zookeeper localhost:2181 --topic topic-to-increase --describe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X