web-dev-qa-db-fra.com

Comment changer le nombre de répliques d'un sujet Kafka?

Une fois le sujet Kafka créé par un producteur ou un administrateur, comment changeriez-vous le nombre de répliques de ce sujet?

36
GuruPo

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 la complétude pour le moment.

Je ne pense pas que tu peux. Normalement, ce serait quelque chose comme 

./kafka-topics.sh --zookeeper localhost: 2181 --alter --topic test2 - facteur de réplication 3

mais ça dit 

L'option "[facteur de réplication]" ne peut pas être utilisée avec l'option "[altérer]"

Il est amusant de pouvoir modifier le nombre de partitions à la volée (ce qui est souvent une action extrêmement destructive lors de l'exécution), mais vous ne pouvez pas augmenter le facteur de réplication, qui devrait être transparent. Mais rappelez-vous qu’il s’agit de 0,10 et non de 10,0 ... Voir ici la demande d’amélioration https://issues.Apache.org/jira/browse/KAFKA-1543

7
Artur Biesiadowski

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 vous faire gagner un temps précieux. Voici un exemple de réplication d'un sujet de 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
    ....
1
MilesHampson