kafka + 如何在现有的 XX 分区上添加额外的分区?

kafka + how to add additional partitions to the existing XX partitions?

这是如何使用名称创建新的 10 个主题分区的示例 - test_test

kafka-topics.sh --create --zookeeper zookeeper01:2181 --replication-factor 3 --partitions 10 --topic test_test

Created topic "test_test".


[root@kafka01 kafka-data]# \ls -ltr | grep  test_test
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-8
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-5
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-2
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-0
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-7
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-4
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-1
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-9
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-6
drwxr-xr-x 2 kafka hadoop  4096 Mar 22 16:53 test_test-3

现在我们要向主题名称添加额外的 10 个分区 - test_test

如何在现有的 10 个分区中添加额外的分区?

您可以运行这个命令:

./bin/kafka-topics.sh --alter --bootstrap-server localhost:9092 --topic test_test --partitions 20

顺便说一下,关于更改分区有两件事需要考虑:

  • 不允许减少分区数
  • 如果您向主题添加更多分区,则无法保证消息的基于键的排序

注意:如果您的 Kafka 版本早于 2.2,则必须使用 --zookeeper 参数而不是 --bootstrap-server

此外,您应该考虑到 添加分区会触发 重新平衡,这会使您的所有此主题的使用者在一段时间内不可用。

rebalance是重新分配分区给消费者的过程,发生在添加新分区、添加新消费者或消费者离开时(可能由于异常而发生、网络问题或启动退出)。
为了保持读取一致性,在重新平衡期间,消费者组完全停止接收消息,直到发生新的分区分配。

这篇相对较短的 很好地解释了再平衡。