Kafka一个Topic的partition个数如何减少?

12345 发表于: 2018-04-09   最后更新时间: 2018-04-09 17:25:47   11,303 游览
./kafka-topics.sh --zookeeper 192.168.100.85:2181 --alter --topic bmc-events-topic-dev --partitions 6
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Error while executing topic command : The number of partitions for a topic can only be increased. Topic bmc-events-topic-dev currently has 256 partitions, 6 would not be an increase.
[2018-04-09 04:42:18,635] ERROR org.apache.kafka.common.errors.InvalidPartitionsException: The number of partitions for a topic can only be increased. Topic bmc-events-topic-dev currently has 256 partitions, 6 would not be an increase.
 (kafka.admin.TopicCommand$)

测试代码如上所示,报错The number of partitions for a topic can only be increased.。如果一定要减少的话有什么成熟的解决方案么?

本人想出的方案: 新建一个topic,拷贝,删除原topic。有更好的方案么?

发表于 2018-04-09

只能增加,不能减少。没有更好的方案了。

12345 -> 半兽人 6年前

那么有个问题?partition个数设置多少比较合适,为Kafka的broker个数 1:1 配比么?新增节点的话,是否partition个数做相应的调整。
但是这样,缩小节点规模的话(broker减少),要保持相应的比例,partition个数没法缩小,确实是一个难题?

半兽人 -> 12345 6年前
1、更麻烦的减少分区的方式是迁移,你可以看迁移章节。
2、没有最优的配置,是根据你物理机的能力来取决一台broker机器分几个分区,还要根据你的分区有多少个消费者,【建议broker数 x 2 = 分区数,但是,还要根据你有多少个消费者。比如:你有10个消费者,3个broker,6个分区,那么就会有4个消费者永远消费不到消息,那么这个时候你就要调整为10个分区了】 
12345 -> 半兽人 6年前

应该不是永远不能接收到消息,consumer group 不是10个当中选择6个依次消费么~
话说,这样说感觉partition多数不会进行缩小操作?
我之前看到JD的报道,不是说他们docker的集群 对于这个kafka节点个数是可以动态扩充的,那么集群的partition缩小应该就是迁移做的~

半兽人 -> 12345 6年前

嗯,除非别的节点挂了,剩下4个才会拿到消费权。
JD这么搞,不太真实,迁移可是很耗资源的,怎么能随意迁移。
我用了这么久,也只迁移过2次。

你的答案

查看kafka相关的其他问题或提一个您自己的问题