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