在Kafka消耗巨大的分区

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

我正在使用一个包含50个分区、总共10m记录的巨大主题。因此,我预期每个分区有200000条记录。我使用了一个简单的分区器和循环方法,将10m分配给50个分区。
当我运行我的用户组时,我看到每个线程中的数据远远少于200k,而在某些线程中,我甚至没有收到一条消息来使用。我是不是遗漏了什么?
总的来说,我得到约800k到1.3m之间的地方只有
这是我的消费者配置

props.put("zookeeper.session.timeout.ms", "60000");
props.put("zookeeper.sync.time.ms", "2000");
props.put("auto.commit.interval.ms", "1000");
props.put("consumer.timeout.ms", "5000");
props.put("auto.offset.reset", "smallest");
props.put("session.timeout.ms", "5000");
pxq42qpu

pxq42qpu1#

当我运行我的用户组时,我看到每个线程中的数据远远少于200k,而在某些线程中,我甚至没有收到一条消息来使用。我是不是遗漏了什么?
总的来说,我得到了大约800k到1.3m之间
你所说的消费少于20万到底是什么意思?你的消费代码运行了多久。根据客户机、设置(代理和使用者)和您的设置(例如:消息大小),可能会出现这样的情况:使用者端的cpu用完了,因此会有更高的延迟。你报告的数字实际上是什么意思?它们是每秒、分钟还是别的什么?因此,您需要提供更多的细节。如果这些是绝对数的总和,那么你的设置就有问题了。因为即使您只运行一个使用者,它也应该使用所有分区,这可能需要更长的时间。
kafka的工作方式是将分区分配给组内的使用者(一个使用者可能使用多个分区,但是一个分区总是分配给一个使用者)。

8yoxcaq7

8yoxcaq72#

增加使用者超时有助于消耗所有消息。多亏了manav,在消费者中确实有一些延迟,当我增加超时时,它就起作用了。

相关问题