增
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,方便统一管理,不用同时维护两个连接信息
查
查看所有主题列表
bin/kafka-topics.sh --bootstrap-server broker_host:port --list
查看单个主题详细信息,不加 --topic
会列出所有可见 topic
详细信息
bin/kafka-topics.sh --bootstrap-server broker_host:port --describe --topic <topic_name>
改
1、修改主题分区数
只能增加不能减少
思考:为什么不能减少分区?
🐬 没想明白,能增加就应该能减少呀,一个 rebalance 的事。(这里不对,rebalance 是消费者组会涉及的事情)
可能的结论: 理论上可行,但收益太小。 减少分区后原来的数据放到哪? 不能删,可靠性会降低; 只能移动,但如何移动?需要保证消息存储的时间顺序性;需要考虑移动过程的时间占用,topic 可用性等诸多问题。
bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic <topic_name> --partitions <新分区数>
2、修改主题级别参数
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 上。
删
bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic <topic_name>