我有一个3节点的Kafka集群,并且正在使用以下命令在其中一个节点中创建一个主题:
bin / kafka-create-topic.sh --zookeeper host1.com:2181,host2.com:2181,host3.com:2181-副本1-分区1-主题测试

因此,现在当我将消息推送到主题时,由于Kafka将消息存储在磁盘空间中,因此我的主机中的一个正变得超载主题消息。我想知道是否需要设置任何配置以在整个群集中分配存储过程。

谢谢,

最佳答案

正如@ om-nom-nom所指出的,您正在创建具有单个分区的主题。因此,该主题将永远只在创建该主题的节点上。因此,即使您设置了3个节点,也将永远不会使用其他两个节点。

更改主题以使用多个分区是分发Kafka主题的方式。 Kafka代理不会将消息分发到其他节点。确定消息转到哪个分区是生产者的责任。正如@ om-nom-nom所指出的,您可以确定这一点,或者让生产者使用循环方法来分发到分区。


  在Kafka生产者中,可以指定分区键以指示消息的目标分区。默认情况下,使用基于散列的分区器确定给定键的分区ID,人们也可以使用自定义分区器。
  
  为了减少打开套接字的数量,在0.8.0(https://issues.apache.org/jira/browse/KAFKA-1017)中,如果未指定分区键或为null,则生产者将选择一个随机分区并坚持一段时间(默认值为10分钟),然后再切换到另一个。
  source

10-07 13:20
查看更多