Kakfa主题管理

创建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个分区。不需要手动管理。