2017-04-05 79 views
1

我正在寻找一种解决方案来分配卡夫卡治疗。 我必须对数百万个独立条目进行一些计算。 因此,我在3个不同的虚拟机上安装了3个卡夫卡经纪商,并开始生产3个不同的线程数据到3个分区的主题。然后,这个想法是与同一消费群体中的3个消费者一起消费这些分区,并将结果存储在另一个过程的另一个主题中。 可悲的是,它最终只在一个分区上存储所有内容,所以只有一个虚拟机。我需要分配存储和处理...卡夫卡:分销过程和存储

是否有可能以完全并行的方式向不同主题生成数据? 如果我可以让1个生产者每隔X分钟向每个分区发送大约相同数量的数据,情况会更好。

我正在使用java kafka-clients 0.10.2.0和kafka_2.11-0.10.2.0 brokers。

谢谢

+0

你的设置似乎是正确的,你怎么知道这些消息只通过一个分区?你也可以告诉我们这个命令的结果:'bin/kafka-topics.sh --describe --zookeeper ZOOKEEPER:2181 --topic TOPIC' – ImbaBalboa

+0

我知道它只进入了一个分区,因为/ tmp/kafka的大小-logs /只在一台电脑上出现,而其他电脑则完全没有改变。下面是此命令的结果:主题:Trajectoires \t PartitionCount:3 \t ReplicationFactor:1个\t CONFIGS: \t主题:Trajectoires \t分区:0 \t组长:2 \t副本:2 \t ISR:2 \t主题:Trajectoires \t分区:1 \t负责人:3 \t副本:3 \t ISR:3 \t主题:Trajectoires \t分区:2 \t负责人:2 \t副本:2 \t ISR:2 – GrinnS

+0

首先,你可以看到,你只需要使用2个经纪人,因为领导者2或3你如果你想达到你想要的,应该有一个分区的代理。 – ImbaBalboa

回答

4

数据按键分区。因此,如果你所有的记录都有相同的密钥,他们将全部进入同一个分区。

您可以在生产者上明确指定要写入的分区,也可以使用导致随机分布的键。