2015-12-11 25 views
0

我有一个3节点Kafka集群,我使用以下命令在其中一个节点中创建主题: bin/kafka-create-topic.sh --zookeeper host1.com:2181,host2.com:2181 ,host3.com:2181 --replica 1 --partition 1 --topic测试卡夫卡将主题存储在多节点集群中的哪个位置?

所以,现在当我邮件推送到话题,我的主人之一挤破头与主题的消息卡夫卡存储信息在磁盘空间。我想知道是否有任何配置要设置为通过群集分配存储过程。

感谢,

回答

1

主题可以被切成多个分区(你的配置只使用1),默认情况下会被经纪公司之间的循环方式分发。

2

正如@ om-nom-nom指出的那样,您正在创建一个带有单个分区的主题。因此,该主题将永远只存在于您创建它的节点上。所以即使你有3个节点的设置,其他两个节点也不会被使用。

将您的主题更改为使用多个分区是您分发卡夫卡主题的方式。卡夫卡经纪人不会将消息分发给不同的节点。生产者负责确定消息传递到哪个分区。这是你可以确定的事情,或者让生产者使用循环法来分配给分区,就像@ om-nom-nom指出的那样。

在Kafka生产者中,可以指定一个分区键来表示消息的目标分区。默认情况下,基于散列的分区程序用于确定给定密钥的分区标识,人们也可以使用自定义分区程序。

为了减少开放套接字#,在0.8.0(https://issues.apache.org/jira/browse/KAFKA-1017),未指定分区键时或空,生产者会选择一个随机分区,并坚持了一段时间(默认为10分钟)前切换到另一个。
source

+0

2节点的其余部分将用于replica.right? –