2015-03-18 13 views
28

Wie ändere ich mit Kafka 0.8.1.1 die Aufbewahrungszeit des Protokolls, während es läuft? Die documentation sagt der Eigenschaft ist , aber ich versuche, es zu ändern kafka-topics.sh kehrt mit diesem FehlerÄndern der Kafka-Aufbewahrungsdauer während der Laufzeit

$ 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) 

Antwort

62

eine Eigenschaft eines Maklers ist, die als ein verwendet wird, Standardwert, wenn ein Thema erstellt wird. Wenn Sie Konfigurationen des aktuell ausgeführten Themas mithilfe von kafka-topics.sh ändern, sollten Sie eine Eigenschaft auf Themenebene angeben.

Eine Eigenschaft auf Themenebene für die Protokollverweildauer ist retention.ms.

Von Topic-level configuration in Kafka 0.8.1 Dokumentation:

  • Property: retention.ms
  • Standard: 7 Tage
  • Server Standardeigenschaft: log.retention.minutes
  • Beschreibung: Diese Konfiguration steuert die m Wir behalten ein Protokoll bei, bevor wir alte Protokollsegmente verwerfen, um Speicherplatz freizugeben, wenn wir die Aufbewahrungsrichtlinie "Löschen" verwenden. Dies ist ein SLA darüber, wie schnell die Verbraucher ihre Daten lesen müssen.

So um den richtigen Befehl

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

Sie können überprüfen, ob die Konfiguration richtig mit dem folgenden Befehl angewandt wird.

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

Dann werden Sie etwas wie unten sehen.

Topic:as-access PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=86400000 
+0

Ich habe den obigen Befehl, aber es funktioniert nicht! Ich kann immer noch die alten Protokolle sehen. Irgendwelche Ideen bitte. – Jack

+1

@Jack Retention ist eine Garantie auf minimale Zeitspanne, um Daten zu behalten. Wenn Sie ältere Protokolle sehen, die für mindestens das Minimum beibehalten werden. Es gibt andere Konfigurationsoptionen für ein Bereinigungsintervall und eine Aufbewahrungsgröße, die beim Löschen älterer Protokolle helfen können. – dlamblin

+0

Eigentlich könnte diese Aufbewahrung nie funktionieren. Bei jedem Versuch, die Aufbewahrungsrichtlinie anzuwenden, werden die Protokolldateien möglicherweise verwendet, oder der Schreibdatenstrom wird geöffnet. Aus diesem Grund schlägt es immer fehl, und die Protokolldatei der Konsole/App meldet dies auch tatsächlich - überprüfen Sie dies unter https://issues.apache.org/jira/browse/KAFKA-1194 – ha9u63ar

4

Die korrekte Konfiguration Schlüssel ist 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". 
16

Hier finden Sie die richtige Art und Weise Thema Config wie von Kafka 0.10.2.0 zu ändern:

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

Thema Konfigurationsoperationen veraltet sind für bin/kafka-topics.sh verändern.

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` 
Verwandte Themen