web-dev-qa-db-ja.com

ランタイム中のkafka保持期間の変更

Kafka 0.8.1.1を使用して、実行中にログの保持期間を変更するにはどうすればよいですか? ドキュメント は、プロパティが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)
48
Foo L

log.retention.hoursは、トピックの作成時にデフォルト値として使用されるブローカーのプロパティです。 kafka-topics.shを使用して現在実行中のトピックの構成を変更するときは、トピックレベルのプロパティを指定する必要があります。

ログ保持時間のトピックレベルのプロパティはretention.msです。

トピックレベルの設定 in Kafka 0.8.1ドキュメントから:

  • プロパティ: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
101
Heejin

以下は、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`
47
Vikas Tikoo

正しい設定キーは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

kafka confluent V4.0.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は典型的な名前です。

他のバージョンでもうまくいくと思う

0