zmiana okresu przechowywania Kafki w czasie wykonywania

W Kafka 0.8.1.1, jak zmienić czas przechowywania dziennika podczas jego działania? Dokumentacja mówi, że właściwość jest log.retention.hours, ale próba jej zmiany za pomocą kafka-topics.sh zwraca ten błąd

$ bin/kafka-topics.sh --zookeeper zk.yoursite.com --alter --topic as-access --config topic.log.retention.hours=24
Error while executing topic command requirement failed: Unknown configuration "topic.log.retention.hours".
java.lang.IllegalArgumentException: requirement failed: Unknown configuration "topic.log.retention.hours".
    at scala.Predef$.require(Predef.scala:145)
    at kafka.log.LogConfig$$anonfun$validateNames$1.apply(LogConfig.scala:138)
    at kafka.log.LogConfig$$anonfun$validateNames$1.apply(LogConfig.scala:137)
    at scala.collection.Iterator$class.foreach(Iterator.scala:631)
    at scala.collection.JavaConversions$JEnumerationWrapper.foreach(JavaConversions.scala:479)
    at kafka.log.LogConfig$.validateNames(LogConfig.scala:137)
    at kafka.log.LogConfig$.validate(LogConfig.scala:145)
    at kafka.admin.TopicCommand$.parseTopicConfigsToBeAdded(TopicCommand.scala:171)
    at kafka.admin.TopicCommand$$anonfun$alterTopic$1.apply(TopicCommand.scala:95)
    at kafka.admin.TopicCommand$$anonfun$alterTopic$1.apply(TopicCommand.scala:93)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
    at kafka.admin.TopicCommand$.alterTopic(TopicCommand.scala:93)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:52)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)
Author: Nicolas Henneaux, 2015-03-18

4 answers

log.retention.hours jest własnością brokera, która jest używana jako wartość domyślna podczas tworzenia tematu. Gdy zmienisz konfigurację aktualnie uruchomionego tematu za pomocą kafka-topics.sh, powinieneś określić właściwość na poziomie tematu.

Właściwością na poziomie tematycznym dla czasu przechowywania dziennika jest retention.ms.

From Topic-level configuration in Kafka 0.8.1 documentation:

  • Nieruchomości : retention.ms
  • domyślnie : 7 dni
  • Default Serwera Właściwość : log.retencja.protokół
  • Opis : Ta konfiguracja kontroluje maksymalny czas przechowywania dziennika, zanim odrzucimy stare segmenty dziennika, aby zwolnić miejsce, jeśli używamy zasady przechowywania "Usuń". Oznacza to umowę SLA dotyczącą tego, jak szybko konsumenci muszą przeczytać swoje dane.

Więc poprawnym poleceniem jest

$ bin/kafka-topics.sh --zookeeper zk.yoursite.com --alter --topic as-access --config retention.ms=86400000

Możesz sprawdzić, czy konfiguracja jest poprawnie zastosowana za pomocą następującego polecenia.

$ bin/kafka-topics.sh --describe --zookeeper zk.yoursite.com --topic as-access

Wtedy zobaczysz coś jak poniżej.

Topic:as-access  PartitionCount:3  ReplicationFactor:3  Configs:retention.ms=86400000
 76
Author: Heejin,
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
2015-03-19 04:11:51

Poniżej znajduje się właściwy sposób na zmianę konfiguracji tematu od Kafka 0.10.2.0:

bin/kafka-configs.sh --zookeeper <zk_host> --alter --entity-type topics --entity-name test_topic --add-config retention.ms=86400000

Operacje konfiguracji tematu zostały wycofane dla bin/kafka-topics.sh.

WARNING: Altering topic configuration from this script has been deprecated and may be removed in future releases.
     Going forward, please use kafka-configs.sh for this functionality`
 31
Author: Vikas Tikoo,
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-06-21 18:32:41

Prawidłowy klucz konfiguracji to retention.ms

$ bin/kafka-topics.sh --zookeeper zk.prod.yoursite.com --alter --topic as-access --config retention.ms=86400000
Updated config for topic "my-topic".
 7
Author: Foo L,
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
2015-03-19 06:48:03

Przetestowałem i użyłem tej komendy w kafka confluent V4.0.0 i apache kafka V 1.0.0 and 1.0.1

/opt / kafka/confluent-4.0.0/bin / kafka-configs --zookeeper XX.XX.XX.XX:2181 --entity-type topics --entity-name test --alter --add-config retention.ms=55000

test to typowa nazwa.

Myślę, że działa dobrze również w innych wersjach

 0
Author: Alihossein shahabi,
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-05-22 17:01:17