kafka操作命令-主题管理

目录

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

执行结果如下:

参考书籍:《Kafka入门与实践》·牟大恩

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值