为风暴消费者检查Kafka主题的偏移量

时间:2018-05-17 11:03:26

标签: apache-kafka apache-zookeeper apache-storm offset trident

我正在使用storm-kafka-client 1.2.1并为KafkaTridentSpoutOpaque创建我的spout配置,如下所示

            kafkaSpoutConfig = KafkaSpoutConfig.builder(brokerURL, kafkaTopic)
                .setProp(ConsumerConfig.GROUP_ID_CONFIG,"storm-kafka-group")
                .setProcessingGuarantee(ProcessingGuarantee.AT_MOST_ONCE)
                .setProp(ConsumerConfig.CLIENT_ID_CONFIG,InetAddress.getLocalHost().getHostName())

我无法在Kafka和Zookeeper中找到我的group-id和偏移量。通过Zookeeper,我尝试使用zkCli.sh并尝试ls /consumers,但没有,因为我认为Kafka本身现在维持偏移而不是动物园管理员。

我也尝试使用下面的命令Kafka

bin/kafka-run-class.sh kafka.admin.ConsumerGroupCommand  --list  --bootstrap-server localhost:9092
Note: This will not show information about old Zookeeper-based consumers.
console-consumer-20130
console-consumer-82696
console-consumer-6106
console-consumer-67393
console-consumer-14333
console-consumer-21174
console-consumer-64550

如果我重新启动拓扑结构,有人可以帮助我找到我的偏移量并重新播放我在Kafka的事件吗?

1 个答案:

答案 0 :(得分:1)

Trident不会在Kafka中存储偏移量,而是在Storm的Zookeeper中存储偏移量。如果您使用Storm的Zookeeper配置的默认设置运行,Storm的Zookeeper中的路径将类似于/coordinator/<your-topology-id>/meta

该路径下面的对象将包含第一个和最后一个偏移量,以及每个批次的主题分区。所以例如/coordinator/<your-topology-id>/meta/15将包含批号15中发出的第一个和最后一个偏移量。

重启后的喷口是否重放偏移量是由您在FirstPollOffsetStrategy中设置的KafkaSpoutConfig控制的。默认值为UNCOMMITTED_EARLIEST,在重新启动时不会重新开始。请参阅https://github.com/apache/storm/blob/v1.2.1/external/storm-kafka-client/src/main/java/org/apache/storm/kafka/spout/KafkaSpoutConfig.java#L126处的Javadoc。