28 主题管理知多少? - 图1

  1. bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 1 --replication-factor 1

其中推荐将 zookeeper 参数替换为 bootstrap-server 参数(从 2.2 版本之后)

原因:

  • 直接连接 zookeeper 会绕过 kafka 的管理体系
  • 所有的命令逐渐 kafka 化,不再使用 zookeeper,方便统一管理,不用同时维护两个连接信息

查看所有主题列表

  1. bin/kafka-topics.sh --bootstrap-server broker_host:port --list

查看单个主题详细信息,不加 --topic 会列出所有可见 topic 详细信息

  1. bin/kafka-topics.sh --bootstrap-server broker_host:port --describe --topic <topic_name>

1、修改主题分区数

只能增加不能减少

思考:为什么不能减少分区?

🐬 没想明白,能增加就应该能减少呀,一个 rebalance 的事。(这里不对,rebalance 是消费者组会涉及的事情)

可能的结论: 理论上可行,但收益太小。 减少分区后原来的数据放到哪? 不能删,可靠性会降低; 只能移动,但如何移动?需要保证消息存储的时间顺序性;需要考虑移动过程的时间占用,topic 可用性等诸多问题。

  1. bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic <topic_name> --partitions <新分区数>

2、修改主题级别参数

  1. bin/kafka-configs.sh --zookeeper zookeeper_host:port --entity-type topics --entity-name <topic_name> --alter --add-config max.message.bytes=10485760

3、主题分区迁移

同样是使用 kafka-reassign-partitions 脚本,对主题各个分区的副本进行“手术”般的调整,比如把某些分区批量迁移到其他 Broker 上。

  1. bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic <topic_name>