为什么Kafka经纪人在__consumer_offsets主题中存储消费者群体的重新平衡元数据?

问题描述 投票:2回答:1

在处理Kafka Streams应用程序时,我们观察到组协调代理在__consumer_offsets主题中存储重新平衡元数据。

因为在我们的例子中我们有1200个流线程,这个元数据变得很大(大约100 MB没有压缩,LZ4压缩后25 MB),并且由于offsets.load.buffer.size参数的默认值只有5MB,因此相应的__consumer_offsets主题分区的关注者代理无法阅读。这导致新GroupCoordinator在旧GroupCoordinator出现故障时使用error_code=16 (NotCoordinatorException)进行响应。

为什么经纪人在__consumer_offsets主题中存储消费者组的重新平衡元数据,有没有办法禁用它?

apache-kafka apache-kafka-streams
1个回答
1
投票

存储组元数据是出于故障转移的原因。如果GroupCoordinator死亡而另一个代理接管这些组,则需要此数据才能正常工作。这是消费者/经纪人功能,并非特定于Kafka Streams。

例如,新的GroupCoordinator必须知道组中的成员应用相应的超时(即session.timeoutmax.poll.timeout)。

因此,无法禁用它,因为群集正常工作至关重要。您可以更改相应的配置设置,以便为代理提供足够大的内存限制来处理组元数据。

对于普通的KafkaConsumers组,元数据通常不会快速增长,并且处理大型组通常不是问题。但是,与客户端相比,KafkaStreams添加了额外的元数据,其元数据特别大。这是一个已知问题,我相信将来会解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.