【发布时间】:2019-09-20 15:41:02
【问题描述】:
我有一个压缩的主题:
/opt/kafka/bin/kafka-topics.sh --zookeeper localhost --describe --topic myTopic
Topic:myTopic PartitionCount:1 ReplicationFactor:1 Configs:cleanup.policy=compact
上面没有消息:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myTopic --from-beginning --property print-key=true
^CProcessed a total of 0 messages
不过,唯一存在的分区上最早和最新的偏移量都是 12。
/opt/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic myTopic --time -2
myTopic:0:12
/opt/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic myTopic --time -1
myTopic:0:12
我想知道这 12 条消息会发生什么?数字是正确的,我原以为他们会在那里,但由于某种原因他们不见了。
据我了解,即使这 12 条消息具有相同的密钥,我也应该至少看到一个 - 这就是压缩的工作原理。
有问题的主题被创建为压缩。在那段时间可能发生的唯一奇怪的事情是 Kafka 实例完全丢失了它的 Zookeeper 数据。会不会也造成了数据丢失?
改写最后一个问题:如果我删除 Zookeeper 上所有与 Kafka 相关的 ZNode,Kafka 上的物理数据会发生什么不好的事情吗?
另外,这里有一些来自 Kafka 启动的日志。
[2019-04-30 12:02:16,510] WARN [Log partition=myTopic-0, dir=/var/lib/kafka] 发现与日志文件 /var/lib/kafka/myTopic 对应的索引文件损坏-0/000000000000000000000.log 由于发现索引损坏,索引文件 (/var/lib/kafka/myTopic-0/00000000000000000000.index) 的大小非零,但最后一个偏移量为 0,不大于基本偏移量 0 .},恢复段和重建索引文件...(kafka.log.Log)
[2019-04-30 12:02:16,524] INFO [Log partition=myTopic-0, dir=/var/lib/kafka] 已完成 1 个段的日志加载,日志起始偏移量 0 和日志结束偏移量 12在 16 毫秒内 (kafka.log.Log)
[2019-04-30 12:35:34,530] INFO Got user-level KeeperException when processing sessionid:0x16a6e1ea2000001 type:setData cxid:0x1406 zxid:0xd11 txntype:-1 reqpath:n/a Error Path:/config/主题/myTopic 错误:KeeperErrorCode = NoNode for /config/topics/myTopic (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-04-30 12:35:34,535] INFO 主题创建 Map(myTopic-0 -> ArrayBuffer(0)) (kafka.zk.AdminZkClient)
[2019-04-30 12:35:34,547] INFO [ReplicaFetcherManager on broker 0] 删除了 myTopic-0 分区的 fetcher (kafka.server.ReplicaFetcherManager)
[2019-04-30 12:35:34,580] INFO [Partition myTopic-0 broker=0] 未找到分区 myTopic-0 (kafka.cluster.Partition) 的检查点高水位标记
[2019-04-30 12:35:34,580] 为分区 myTopic-0 加载了 INFO 副本,初始高水印为 0 (kafka.cluster.Replica)
[2019-04-30 12:35:34,580] INFO [Partition myTopic-0 broker=0] myTopic-0 从偏移量 12 的 Leader Epoch 0 开始。之前的 Leader Epoch 为:-1 (kafka.cluster.Partition )
消息确实被删除了:
[2019-04-30 12:39:24,199] INFO [Log partition=myTopic-0, dir=/var/lib/kafka] 由于保留时间 10800000 毫秒违规(kafka .log.Log)
[2019-04-30 12:39:24,201] INFO [Log partition=myTopic-0, dir=/var/lib/kafka] 在 2 毫秒内在偏移 12 处滚动新日志段。 (kafka.log.Log)
【问题讨论】:
-
我觉得这 10800000 毫秒的保留时间来自哪里(3 小时)有点奇怪
-
@sense
server.properties最有可能
标签: apache-kafka