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.)
Réponses
Trop de publicités?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.
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
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
....
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