Apache kafka 在Kafka 0.10.2.x中为代理设置log.retentions.hours

Apache kafka 在Kafka 0.10.2.x中为代理设置log.retentions.hours,apache-kafka,Apache Kafka,我正在尝试为kafka 0.10.2x的代理级别配置设置log.retenton.hours。但我得到了以下命令的错误 kafka-configs.sh --zookeeper zookeeper:2181 --entity-type brokers --entity-name 0 --alter --add-config log.retention.hours=-1 Error while executing config command requirement failed: Unkno

我正在尝试为kafka 0.10.2x的代理级别配置设置
log.retenton.hours
。但我得到了以下命令的错误

kafka-configs.sh  --zookeeper zookeeper:2181 --entity-type brokers --entity-name 0 --alter --add-config log.retention.hours=-1

Error while executing config command requirement failed: Unknown Dynamic Configuration 'log.retention.hours'.
java.lang.IllegalArgumentException: requirement failed: Unknown Dynamic Configuration 'log.retention.hours'.
    at scala.Predef$.require(Predef.scala:277)
    at kafka.server.DynamicConfig$.$anonfun$validate$1(DynamicConfig.scala:101)
    at kafka.server.DynamicConfig$.$anonfun$validate$1$adapted(DynamicConfig.scala:100)
    at scala.collection.Iterator.foreach(Iterator.scala:929)
    at scala.collection.Iterator.foreach$(Iterator.scala:929)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1406)
    at kafka.server.DynamicConfig$.kafka$server$DynamicConfig$$validate(DynamicConfig.scala:100)
    at kafka.server.DynamicConfig$Broker$.validate(DynamicConfig.scala:59)
    at kafka.admin.AdminUtils$.changeBrokerConfig(AdminUtils.scala:555)
    at kafka.admin.ConfigCommand$.alterConfig(ConfigCommand.scala:105)
    at kafka.admin.ConfigCommand$.main(ConfigCommand.scala:68)
    at kafka.admin.ConfigCommand.main(ConfigCommand.scala)

正如错误所说,该属性不是动态的(在代理运行时无法修改)

另外,这个功能在你的版本中是不可能实现的

从Kafka版本1.1开始,可以在不重新启动代理的情况下更新某些代理配置

您可以按主题级别设置保留期,否则,您需要编辑每个代理的
server.properties
文件,并正常地重新启动它们


我相信您有很好的理由“禁用”保留,但我建议您首先尝试压缩主题,正如错误所述,该属性不是动态的(在代理运行时无法修改)

另外,这个功能在你的版本中是不可能实现的

从Kafka版本1.1开始,可以在不重新启动代理的情况下更新某些代理配置

您可以按主题级别设置保留期,否则,您需要编辑每个代理的
server.properties
文件,并正常地重新启动它们


我相信您有很好的理由“禁用”保留,但我建议您首先尝试压缩主题。保留时间是代理级别的只读属性,因此不能使用kafka-config.sh动态更改

在server.properties中更改它并重新启动代理

以下是只读或动态代理配置的详细信息。
log.retention.hours是代理级别的只读属性,因此不能使用kafka-config.sh动态更改

在server.properties中更改它并重新启动代理

以下是只读或动态代理配置的详细信息。

我不是在禁用保留,而是在无限保留。这是因为数据正在批量写入。现在,当我优雅地重新启动卡夫卡时,我丢失了所有以前的消息,消费者被重置。我用的是卡夫卡。你知道我可以继续添加到现有位置吗?你正在禁用消息过期。无限保留是同一个概念。重新启动代理(只是卡夫卡进程,而不是物理机器)不会“清除”存储的偏移量或消费群体的数据,因此我不理解这个问题。也许您从未提交过Consumerum的偏移量,不。您可能想进一步了解Docker,因为当您停止一个实例时,任何未卷装的数据都将立即消失。这也适用于所有容器。如果您使用的是Docker,除非您针对的是实际运行的Kafka 0.10环境,否则我建议您使用更新的版本。option(“failOnDataLoss”,“false”)\,解决了pyspark偏移问题。谢谢,这解决了我的问题。我不是在禁用保留,我在做无限保留。这是因为数据正在批量写入。现在,当我优雅地重新启动卡夫卡时,我丢失了所有以前的消息,消费者被重置。我用的是卡夫卡。你知道我可以继续添加到现有位置吗?你正在禁用消息过期。无限保留是同一个概念。重新启动代理(只是卡夫卡进程,而不是物理机器)不会“清除”存储的偏移量或消费群体的数据,因此我不理解这个问题。也许您从未提交过Consumerum的偏移量,不。您可能想进一步了解Docker,因为当您停止一个实例时,任何未卷装的数据都将立即消失。这也适用于所有容器。如果您使用的是Docker,除非您针对的是实际运行的Kafka 0.10环境,否则我建议您使用更新的版本。option(“failOnDataLoss”,“false”)\,解决了pyspark偏移问题。谢谢,这解决了我的问题。