在运行时更改kafka保留期

时间:2015-03-18 17:50:19

标签: apache-kafka retention

使用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)

4 个答案:

答案 0 :(得分:96)

log.retention.hours是代理的属性,在创建主题时用作默认值。使用kafka-topics.sh更改当前正在运行的主题的配置时,应指定主题级属性。

日志保留时间的主题级属性为retention.ms

来自Kafka 0.8.1文档中的Topic-level configuration

  • 财产:retention.ms
  • 默认:7天
  • 服务器默认属性:log.retention.minutes
  • 说明:如果我们使用" delete"我们将丢弃旧日志段以释放空间,此配置将控制我们保留日志的最长时间。保留政策。这代表了消费者必须多久阅读其数据的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

答案 1 :(得分:44)

以下是从Kafka 0.10.2.0开始更改主题配置的正确方法:

true

false已弃用主题配置更改操作。

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

答案 2 :(得分:7)

正确的配置密钥是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".

答案 3 :(得分:0)

我在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

{{1}}是典型名称。

我认为它在其他版本中效果也很好