Comment changer les répliques du sujet kafka?
Après un sujet Kafka créé par le producteur ou l'administrateur, comment changer le numéro de réplicas de ce sujet?(augmenter ou diminuer les répliques le nombre.)
4 réponses
Edit: on m'a prouvé que j'avais tort - veuillez vérifier l'excellente réponse de lukdumi.
Je laisse ma réponse originale pour l'instant.
Je ne pense pas que vous pouvez. Normalement, ce serait quelque chose comme
./kafka-topics.sh --zookeeper localhost:2181-modifier --sujet test2 --réplication-facteur 3
, Mais il dit
L'Option "[facteur de réplication] "ne peut pas être utilisée avec l'option"[alter] "
C'est drôle que vous puissiez changer nombre de partitions à la volée (ce qui est souvent une action extrêmement destructrice lorsqu'elle est effectuée en exécution), mais ne peut pas augmenter le facteur de réplication, qui devrait être transparent. Mais rappelez-vous, c'est 0.10, pas 10.0... Veuillez voir ici pour la demande d'amélioration https://issues.apache.org/jira/browse/KAFKA-1543
Pour augmenter le nombre de répliques pour un sujet donné, vous devez:
1. Spécifiez les répliques supplémentaires dans un fichier JSON de réaffectation personnalisé
Par exemple, vous pouvez créer augmenter-réplication-facteur.json et mettez ce contenu dedans:
{"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. Utilisez le fichier avec l'option -- execute de l'outil Kafka-reassign-partitions
[ou kafka-reassign-partitions.sh - selon le paquet kafka]
Pour exemple:
$ kafka-reassign-partitions --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute
3. Vérifiez le facteur de réplication avec l'outilKafka-topics
[ou kafka-topics.sh - selon le paquet kafka]
$ 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.
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'un sujet de partition 64 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}
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écifiez les partitions supplémentaires au sujet 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 les répliques supplémentaires dans un fichier JSON de réaffectation personnalisé
Par exemple, vous pouvez créer increase-replication-factor.json et y mettre ce contenu:
{"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. Utilisez le fichier avec l'option -- execute du outil Kafka-reassign-partitions
bin/kafka-reassign-partitions --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute
4. Vérifiez le facteur de réplication avec l'outil Kafka-topics
bin/kafka-topics --zookeeper localhost:2181 --topic topic-to-increase --describe