缺少有关Kafka紧凑主题的消息

时间:2019-05-02 06:45:50

标签: apache-kafka

我有一个紧凑的主题:

/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]警告[Log partition = myTopic-0,dir = / var / lib / kafka]找到了与日志文件/ var / lib / kafka / myTopic对应的损坏的索引文件-0 / 00000000000000000000.log由于发现损坏的索引,索引文件(/var/lib/kafka/myTopic-0/00000000000000000000.index)的大小非零,但最后一个偏移量为0,不大于基本偏移量0 。},恢复段并重建索引文件...(kafka.log.Log)

     

[2019-04-30 12:02:16,524]信息[日志分区= myTopic-0,目录= / var / lib / kafka]完成了1段日志的加载,日志起始偏移量0和日志结束偏移量12在16毫秒内(kafka.log.Log)

     

[2019-04-30 12:35:34,530]信息处理会话ID:0x16a6e1ea2000001类型:setData cxid:0x1406 zxid:0xd11 txntype:-1 reqpath:n / a错误路径:/ config / topic / myTopic错误:KeeperErrorCode = / config / topics / myTopic(org.apache.zookeeper.server.PrepRequestProcessor)的NoNode

     

[2019-04-30 12:35:34,535]信息主题创建映射(myTopic-0-> ArrayBuffer(0))(kafka.zk.AdminZkClient)

     

[2019-04-30 12:35:34,547]信息[代理0上的ReplicaFetcherManager]删除了分区myTopic-0的提取程序   (kafka.server.ReplicaFetcherManager)

     

[2019-04-30 12:35:34,580]信息[Partition myTopic-0 broker = 0]未找到分区myTopic-0(kafka.cluster.Partition)的检查点高水印

     

[2019-04-30 12:35:34,580]信息副本已加载到具有初始高水位0(kafka.cluster.Replica)的myTopic-0分区

     

[2019-04-30 12:35:34,580]信息[Partition myTopic-0 broker = 0] myTopic-0从偏移量12开始于Leader Epoch0。先前的Leader Epoch是:-1(kafka.cluster.Partition )

消息确实已删除:

  

[2019-04-30 12:39:24,199]信息[日志分区= myTopic-0,目录= / var / lib / kafka]由于保留时间违反了10800000ms(kafka),发现具有基本偏移[0]的可删除段.log.Log)

     

[2019-04-30 12:39:24,201]信息[日志分区= myTopic-0,目录= / var / lib / kafka]在2毫秒内在偏移量12处滚动了新的日志段。 (kafka.log.Log)

1 个答案:

答案 0 :(得分:0)

  

/ config / topics / myTopic的NoNode

Kafka不再知道该主题的存在,因此应该对其进行压缩,这似乎在日志清除器日志中很明显

  

由于保留时间违反了10800000ms

是的,Zookeeper非常重要。但是,也可以使用关闭代理,否则将强行终止该进程,否则主机将最终导致分区段损坏


我不太确定什么情况会导致这种情况

  

最后一个偏移为0,不大于基本偏移0

但是,假设您有一个完整的群集,并且该主题的复制因子大于1,那么您可以希望至少有一个副本是健康的。

恢复具有损坏的索引/分区的代理的方法将是:停止kafka进程,从磁盘上删除损坏的分区文件夹,在该计算机上重新启动kafka,然后使其从正常实例中复制回来