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

12345 发表于: 2018-04-09   最后更新时间: 2018-04-09  
  •   0 订阅,148 游览
./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。有更好的方案么?






征集:如果你也是一个热爱分享文章的人,愿意参与贡献文章来补充完善本网的内容,欢迎入群:14085484

发表于: 14天前   最后更新时间: 14天前   游览量:148
上一条: 到头了!
下一条: 已经是最后了!

评论…


  • 只能增加,不能减少。没有更好的方案了。
    • 那么有个问题?partition个数设置多少比较合适,为Kafka的broker个数 1:1 配比么?新增节点的话,是否partition个数做相应的调整。
      但是这样,缩小节点规模的话(broker减少),要保持相应的比例,partition个数没法缩小,确实是一个难题?
        • 1、更麻烦的减少分区的方式是迁移,你可以看迁移章节。
          2、没有最优的配置,是根据你物理机的能力来取决一台broker机器分几个分区,还要根据你的分区有多少个消费者,【建议broker数 x 2 = 分区数,但是,还要根据你有多少个消费者。比如:你有10个消费者,3个broker,6个分区,那么就会有4个消费者永远消费不到消息,那么这个时候你就要调整为10个分区了】 
            • 应该不是永远不能接收到消息,consumer group 不是10个当中选择6个依次消费么~
              话说,这样说感觉partition多数不会进行缩小操作?
              我之前看到JD的报道,不是说他们docker的集群 对于这个kafka节点个数是可以动态扩充的,那么集群的partition缩小应该就是迁移做的~
                • 嗯,除非别的节点挂了,剩下4个才会拿到消费权。
                  JD这么搞,不太真实,迁移可是很耗资源的,怎么能随意迁移。
                  我用了这么久,也只迁移过2次。
                  • 评论…
                    • in this conversation
                      提问