web-dev-qa-db-fra.com

changement de la période de rétention kafka pendant l'exécution)

Avec Kafka 0.8.1.1, comment puis-je modifier le temps de conservation du journal pendant son exécution? --- documentation indique que la propriété est log.retention.hours, mais en essayant de le changer en utilisant kafka-topics.sh renvoie cette erreur

$ 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)
48
Foo L

log.retention.hours est une propriété d'un courtier utilisée comme valeur par défaut lors de la création d'un sujet. Lorsque vous modifiez les configurations de la rubrique en cours d'exécution à l'aide de kafka-topics.sh, vous devez spécifier une propriété au niveau du sujet.

Une propriété de niveau rubrique pour la durée de conservation du journal est retention.ms.

De configuration au niveau du sujet dans Kafka 0.8.1:

  • Propriété : retention.ms
  • Défaut : 7 jours
  • Propriété par défaut du serveur : log.retention.minutes
  • Description : cette configuration contrôle le temps maximum pendant lequel nous allons conserver un journal avant de supprimer les anciens segments du journal afin de libérer de l'espace si nous utilisons le "supprimer". politique de rétention. Cela représente un SLA) sur le temps nécessaire aux consommateurs pour lire leurs données.

Donc, la commande correcte est

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

Vous pouvez vérifier si la configuration est correctement appliquée avec la commande suivante.

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

Ensuite, vous verrez quelque chose comme ci-dessous.

Topic:as-access  PartitionCount:3  ReplicationFactor:3  Configs:retention.ms=86400000
101
Heejin

Voici la bonne façon de modifier la configuration de sujet à partir de 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

Les opérations de modification de configuration de sujet sont obsolètes pour 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`
47
Vikas Tikoo

La clé de configuration correcte est 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
Foo L

J'ai testé et utilisé cette commande dans kafka confluent V4.0.0 et 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 est le nom typique.

Je pense que cela fonctionne bien dans d'autres versions aussi

0