kafka使用者并没有使用来自所有分区的消息

yc0p9oo0  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(446)

我创建了一个带有10个分区的kafka主题,并试图通过一个kafka使用者来使用消息。但是,kafka使用者并不是从所有分区读取消息。更具体地说,它只使用来自5个特定分区的消息。示例:使用者仅使用来自[0,1,2,3,4]的消息。重新启动后,如果它开始使用来自[5,6,7,8,9]的消息,那么它将只使用来自这些分区的消息。下面是kafka-consumer-offset-checker.sh命令的输出

Group|Topic   | Pid | Offset   | logSize| Lag      |  Owner
GRP1 | topic1 | 0   | 128      | 175    | 47        |  none
GRP1 | topic1 | 1   | 117      | 146    | 29        |  none
GRP1 | topic1 | 2   | 62       | 87     |  25       |  none
GRP1 | topic1 | 3   | 101      | 143    | 42        |  none
GRP1 | topic1 | 4   | 104      | 145    | 41        |  none
GRP1 | topic1 | 5   | 118      | 118    | 0         |   none
GRP1 | topic1 | 6   | 111      | 111    | 0         |   none
GRP1 | topic1 | 7   | 161      | 161    | 0         |   none
GRP1 | topic1 | 8   | 144      | 144    | 0         |   none
GRP1 | topic1 | 9   | 171      | 171    | 0         |   none

有人知道为什么会这样吗。。?

2ul0zpep

2ul0zpep1#

Kafka消费者推荐的配置要为每个消费者设置一个分区,Kafka配置需要以正确的方式设计。我建议每个主题的每个单线程使用者应该有相同数量的分区。这意味着,如果您想设置5个独占使用单个分区的使用者,则必须创建具有5个分区的主题。在您的情况下,可能需要使用 ./bin/kafka-topics.sh --zookeeper localhost:9092 --alter --topic testKafka --partitions 5 命令。
根据您的问题,由于主题已被部分消费,因此可能已将使用者配置为使用者组。同一组中的另一个使用者可能正在使用剩余的分区&因为使用者少于分区,所以分区是非活动的。

92vpleto

92vpleto2#

本周,我在使用spark streaming读取带有32个分区的kafka主题时遇到了类似的问题。具体来说,我们使用的是apache org.apache.spark.streaming.kafka010.*提供的spark kafka流类。
我们只能使用单个分区。问题是因为我们包括了Kafka的版本 0.10.1.0 用我们的jar。恢复到 0.10.0.1 即使我们的群集已打开,也修复了它 0.10.1.0 .

相关问题