Kafka 分区重新分配性能影响

Kafka Partitions Reassignment Performance Impact

我有一个 Kafka 生产集群,有 5 个节点和大约 500 个主题。我需要扩展我的集群以添加 2 个新节点,因为 Kafka 不提供自动数据重新分区,我希望 运行 kafka-reassign-partitions.sh 随 Kafka 发行版一起提供,以重新平衡我在整体 7 中的所有主题现在集群中的节点。

由于我的集群中已经有大量的生产数据,

  1. 运行此脚本会阻止对我的 Kafka 主题的任何并发写入吗?
  2. 运行使用此脚本会减慢我的 cluster/producers/consumers 速度吗?
  3. 如果我的集群在此脚本执行期间开始出现异常行为,我如何才能停止该脚本?

我目前正在使用 Kafka v0.8.2.0 与多个生产者和多个消费者。

Kafka-reassign-partitions 所做的是:

  1. 根据需要在新代理上创建新副本
  2. 让他们复制数据直到赶上领导者
  3. 在需要时触发领导人选举
  4. 在需要的地方删除副本

领导者选举阶段将延迟写入(就像任何领导者故障转移一样)。 消费者/生产者可能会变慢,因为额外的复制会占用磁盘和网络资源(有时是大量资源) 你不能在进行中停止它。我的意思是,您可以从 ZK 中删除相关节点,但它并没有经过真正的测试,并且创建的新副本会保留下来……我不会尝试。如果您担心,我建议一次移动一个分区。

在 0.10.1.0(现在将冻结功能)中,我们将添加限制重新分配工作的功能,这将限制对生产者和消费者的性能影响。