Jak zmienić repliki tematu kafka?

Po jednym temacie stworzonym przez producenta lub Administratora, jak zmienić numer replik tego tematu?(zwiększ lub zmniejsz liczbę replik.)

Author: GuruPo, 2016-06-22

4 answers

Edit: udowodniono, że się mylę-proszę sprawdzić doskonałą odpowiedź od lukdumi.

Zostawiam na razie oryginalną odpowiedź.

Myślę, że nie możesz. Normalnie byłoby to coś w stylu

./kafka-topics.sh --zookeeper localhost: 2181 -- alter --topic test2 --replikacja-współczynnik 3

Ale jest napisane

Opcja "[czynnik replikacji]" nie może być używana z opcją "[alter] "

To zabawne, że można zmienić liczba partycji w locie (co jest często bardzo destrukcyjne działanie podczas wykonywania), ale nie może zwiększyć współczynnika replikacji, który powinien być przezroczysty. Ale pamiętaj, to jest 0.10, nie 10.0... Proszę zobaczyć tutaj, aby uzyskać prośbę o ulepszenie https://issues.apache.org/jira/browse/KAFKA-1543

 6
Author: Artur Biesiadowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-25 07:40:11

Aby zwiększyć liczbę replik dla danego tematu należy:

1. Określ dodatkowe repliki w niestandardowym pliku JSON

Na przykład, można utworzyć wzrost-współczynnik replikacji.json i umieścić w nim tę treść:

{"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. Użyj pliku z opcją -- execute narzędzia kafka-resign-partitions

[lub kafka-reassign-partitions.sh - w zależności od pakietu kafka]

Dla przykład:

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

3. Sprawdź współczynnik replikacji za pomocą narzędzia kafka-topics

[lub kafka-topics.sh -w zależności od pakietu 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

Zobacz też: część oficjalnej dokumentacji, która opisuje jak aby zwiększyć współczynnik replikacji .

 65
Author: Łukasz Dumiszewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 11:33:14

Jeśli masz dużo partycji, użycie kafka-reassign-partitions do wygenerowania pliku json wymaganego przez odpowiedź Łukasza Dumiszewskiego (i oficjalną dokumentację) może być oszczędnością czasu. Oto przykład replikacji tematu partycji 64 Z 1 do 2 serwerów bez konieczności podawania wszystkich partycji:

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}

Wyjścia:

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
Author: MilesHampson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-17 23:47:54

Aby zwiększyć liczbę replik dla danego tematu należy:

1. Określ dodatkowe partycje do istniejącego tematu za pomocą poniższego polecenia(powiedzmy zwiększ z 2 do 3)

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

2. Określ dodatkowe repliki w niestandardowym pliku JSON

Na przykład, można utworzyć increase-replication-factor.json i umieść w nim tę treść:

{"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. Użyj pliku z opcją -- execute kafka-resign-partitions tool

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

4. Sprawdź współczynnik replikacji za pomocą narzędzia kafka-topics

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

 0
Author: SivaPhani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 13:59:53