创建Topic
1 | bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 1 --replication-factor 1 |
kafka2.2之后推荐使用--bootstrap-server
代替--zookeeper
,因为通过前者创建可以控制权限,只和Broker打交道也是官方之后标准。
查看Topic列表
1 | bin/kafka-topics.sh --bootstrap-server broker_host:port --list |
查看Topic详情
1 | bin/kafka-topics.sh --bootstrap-server broker_host:port --describe --topic <topic_name> |
删除Topic
1 | bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic <topic_name> |
增加Topic分区
1 | bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic <topic_name> --partitions < 新分区数 > |
kafka不允许增加分区。因为多个broker节点都冗余有分区的数据,减少分区数需要操作多个broker且需要迁移该分区数据到其他分区。如果是按消息key hash选的分区,那么迁移就不知道迁到哪里了,因为只有业务代码可以决定放在哪。已经被大佬肯定了,应该没错。:)
修改Topic参数
1 | bin/kafka-configs.sh --zookeeper zookeeper_host:port --entity-type topics --entity-name <topic_name> --alter --add-config max.message.bytes=10485760 |
设置允许最大消息大小
变更Topic副本数
使用kafka-reassign-partitions
修改Topic限速
1 | bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.rate=104857600,follower.replication.throttled.rate=104857600' --entity-type brokers --entity-name 0 |
主要限制Leader和Follower的副本使用的带宽。broker 0 代表某一个节点,多个需要每个都单独执行命令。
1 | bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*' --entity-type topics --entity-name test |
同时还要设置要限速的副本*代表所有副本
内部Topic
__consumer_offsets是用来记录consumer的offset值,默认创建50个分区。不需要手动管理。