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.)

26
demandé sur GuruPo 2016-06-22 10:02:17

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

6
répondu Artur Biesiadowski 2017-04-25 07:40:11

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.

65
répondu Łukasz Dumiszewski 2017-04-20 11:33:14

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
    ....
1
répondu MilesHampson 2018-08-17 23:47:54

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

0
répondu SivaPhani 2018-09-18 13:59:53