kafka集群扩展通用步骤

时间:2017-09-04 13:00:56

标签: apache-kafka

我们计划将集群从2个节点扩展到8个节点。分区重新分配工具可以选择移动主题或分区。

为了重新分配分区,我打算按照以下步骤进行操作。

无论节点添加的数量如何,如果我在topic-to-move.json和下面命令中的所有代理中给出所有主题,那么它将在节点之间给出相等的分区分配正确吗?

bin / kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file topics-to-move.json --broker-list“0,1,2,3, 4,5,6,7“ - 生成

在此之后我计划应用json

- 执行--reassignment-json-file generated-json file

这会导致任何问题吗?

这一步似乎更为一般,但为什么不以这种方式记录?

2 个答案:

答案 0 :(得分:1)

通过将完整主题列表传递给工具,可能会重新分配所有分区。

在已经很大的群集(> 1000s主题)中,这会导致大量不必要的数据复制和领导者选举。因此,通常您只提供主题的子集,并仅将新代理指定为目标,以最大限度地减少完成重新分配所需的工作。

如果您的群集足够小并且没有GB / TB数据,那么将所有主题传递给重新分配工具应该没问题,这可能是最简单/最快的。

答案 1 :(得分:1)

有几点需要注意:

  1. 均匀分发分区不一定均匀分布数据。某些分区比其他分区拥有更多数据,因此您需要查看每个分区中的数据量,以便制定计划以在整个代理中均匀分布数据。如果您有单个分区主题或不均衡的密钥,则尤其如此。
  2. Be"机架意识"。如果8个代理商位于3个亚马逊可用区或数据中心的两个不同的电源或网络交换机上,那么请注意不要将领导者及其所有副本分发到同一个机架ID中,否则会丢失高可用性
  3. 考虑使用复制配额。当您在代理之间移动大量数据时,它可能会从活跃的生产者和消费者那里夺走网络带宽。 Kafka 0.10+添加了单独的复制配额(带宽限制),因此您可以减少重新分配期间使用的带宽,因此它不会对您的实时客户端流量产生负面影响。只是油门太低或者你的重新分配可能永远不会赶上来自生产商的新变化。
  4. 您可能需要考虑使用第三方工具来帮助自动构建重新分配计划。雅虎的Kafka Manager具有重新分配功能(参见https://github.com/yahoo/kafka-manager/blob/master/README.md),Confluent为其Auto Rebalancer提供30天免费试用,允许扩展和减少具有机架感知和限制重新分配的代理节点(请参阅http://docs.confluent.io/current/kafka/rebalancer/rebalancer.html