目录
1.创建主题
2.查看主题
3.修改主题
4.删除主题
1.创建主题
1.1 创建名为:test-topic的主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --create --topic test-topic --replication-factor 1 --partitions 5
执行结果如下:
登录ZooKeeper客户端查看所创建的主题元数据信息,“test-topic”元数据信息如下:
可以看到,该主题有5个分区、1个副本
⭐️⭐️⭐️⭐️
1.2 在创建主题时,我们还可以通过config参数来设置主题级别的配置以覆盖默认配置,可以设置多组配置,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --create --topic test-topic-two --replication-factor 1 --partitions 6 --config max.message.bytes=404800
通过config命令设置该主题的max.message.bytes为404800字节
⭐️⭐️⭐️⭐️
1.3 相关命令解释
zookeeper:必传参数,用于配置Kafka集群与ZooKeeper连接地址。为了容错,建议多个ZooKeeper节点的集群至少传递两个ZooKeeper连接配置,多个配置之间以逗号隔开。
partitions:必传参数,用于设置主题分区数。Kafka通过分区分配策略,将一个主题的消息分散到多个分区并分别保存到不同的代理上,以此来提高消息处理的吞吐量。Kafka的生产者和消费者可以采用多线程并行对主题消息进行处理,而每个线程处理的是一个分区的数据,因此分区实际上是Kafka并行处理的基本单位。分区数越多一定程度上会提升消息处理的吞吐量,然而Kafka消息是以追加的形式存储在文件中的,这就意味着分区越多需要打开更多的文件句柄,这样也会带来一定的开销。
replication-factor:必传参数,用来设置主题副本数。副本会被分布在不同的节点上,副本数不能超过节点数,否则创建主题会失败。例如,3个节点的Kafka集群最多只能有3个副本,若创建主题时指定副本数大于3,则会抛出以下错误提示:
ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException:
Replication factor: 5 larger than available brokers: 3.
2.查看主题
2.1 list参数查看所有主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --list
执行结果如下:
可以看到当前kafka中有两个主题
⭐️⭐️⭐️⭐️
2.2 describe参数可以查看所有主题或某个特定主题的信息
2.2.1 describe查看所有主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe
执行结果如下:
从输出结果可以看到:已按主题分组展示,每组主题信息中第一行分别展示了主题名、该主题分区总数、该主题副本总数、创建主题时通过config参数所设置的配置,从第二行开始按主题分区编号排序,展示每个分区的Leader副本节点、副本列表AR及ISR列表信息。
⭐️⭐️⭐️⭐️
2.2.2 describe查看指定主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --topic test-topic
执行结果如下:
⭐️⭐️⭐️⭐️
2.3 查看正在同步的主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --under-replicated-partitions
⭐️⭐️⭐️⭐️
2.4 查看没有Leader副本的主题,通过describe与unavailable-partitions命令组合使用,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --unavailable-partitions
执行结果如下:
可以看到Leader参数的值为none,即该主题没有Leader 副本
⭐️⭐️⭐️⭐️
2.5 查看主题覆盖的配置,通过describe与topics-with-overrides命令组合使用,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --topics-with-overrides
执行结果如下:
可以看到主题为test-topic-two(在章节1.2中创建)的max.message.bytes属性被覆盖修改为404800
3.修改主题
3.1 修改主题级别配置
3.1.1 先查看主题test-topic-two当前已覆盖的配置,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --topics-with-overrides --topic test-topic-two
执行结果如下:
可以看到max.message.bytes属性被覆盖修改为404800
⭐️⭐️⭐️⭐️
3.1.2 现在再修改主题test-topic-two的max.message.bytes属性值为204800,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --alter --topic test-topic-two --config max.message.bytes=204800
执行结果如下:
更新配置成功,同时输出信息提示通过该方式修改主题级别配置的相关命令已过期,在未来的版本该命令将被移除,推荐使用kafka-configs.sh脚本。
⭐️⭐️⭐️⭐️
3.1.3 再次查看主题test-topic-two当前已覆盖的配置,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --describe --topics-with-overrides --topic test-topic-two
执行结果如下:
可以看到max.message.bytes属性值已被修改为204800
3.2 新增/删除主题配置
3.2.1 覆盖主题segment.byte的大小为200M(200*1024*1024=20971520),并查看覆盖属性
⭐️⭐️⭐️⭐️
3.2.2 再删除配置项segment.bytes的设置,使其值恢复为默认值,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --alter --topic test-topic-two --delete-config segment.bytes
注意命令:--delete-config
执行结果如下:
可以看到在3.2.1中修改的segment.bytes属性已被还原
3.3 增加分区
3.3.1 Kafka并不支持减少分区的操作,我们只能为一个主题增加分区。主题test-topic(在章节1.1中创建)原本有5个分区,现将其分区设置为8个。命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --alter --topic test-topic --partitions 8
执行结果如下:
4.删除主题
删除Kafka主题,一般有以下两种方式:
(1)手动删除各节点${log.dir}目录下该主题分区文件夹,同时登录ZooKeeper客户端删除待删除主题对应的节点,主题元数据保存在/brokers/topics和/config/topics目录下。
(2)执行kafka-topics.sh脚本进行删除,若希望通过该脚本彻底删除主题,则需要保证在启动Kafka时所加载的server.properties文件中配置delete.topic.enable=true,该配置默认为false。否则执行该脚本并未真正删除主题,而是在ZooKeeper的/admin/delete_topics目录下创建一个与待删除主题同名的节点,将该主题标记为删除状态。
4.1 通过kafka-topics.sh删除主题。删除名为test-topic-1的主题,命令如下:
./kafka-topics.sh --zookeeper localhost:2181 --delete --topic test-topic-1
执行结果如下:
文章来源:https://www.toymoban.com/news/detail-483181.html
参考书籍:《Kafka入门与实践》·牟大恩文章来源地址https://www.toymoban.com/news/detail-483181.html
到了这里,关于kafka操作命令-主题管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!