Изменение периода аренды кафки во время выполнения
С Kafka 0.8.1.1 как изменить время хранения журнала во время его работы? documentation говорит, что свойство log.retention.hours
, но попытка изменить его с помощью kafka-topics.sh
возвращает эту ошибку
$ 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)
Ответы
Ответ 1
log.retention.hours
является свойством брокера, который используется как значение по умолчанию при создании темы. Когда вы изменяете настройки текущего текущего раздела с помощью kafka-topics.sh
, вы должны указать свойство уровня темы.
Свойство уровня темы для времени хранения журнала retention.ms
.
От Конфигурация уровня в документации Kafka 0.8.1:
- Свойство: retention.ms
- По умолчанию: 7 дней
- Значение по умолчанию для сервера: log.retention.minutes
- Описание. Эта конфигурация контролирует максимальное время, в течение которого мы сохраним журнал, прежде чем мы отбросим старые сегменты журнала, чтобы освободить место, если мы используем политику хранения "удалить". Это представляет собой SLA о том, как скоро потребители должны читать свои данные.
Итак, правильная команда
$ bin/kafka-topics.sh --zookeeper zk.yoursite.com --alter --topic as-access --config retention.ms=86400000
Вы можете проверить правильность применения конфигурации с помощью следующей команды.
$ bin/kafka-topics.sh --describe --zookeeper zk.yoursite.com --topic as-access
Затем вы увидите что-то вроде ниже.
Topic:as-access PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=86400000
Ответ 2
Ниже приведен правильный способ изменения конфигурации темы с 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
Операции изменения конфигурации текста устарели для 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`
Ответ 3
Правильный ключ конфигурации 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".