Kafka 常用操作命令(下)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: Kafka 常用操作命令

多消费者消费


  • 执行如下命令


./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myTopic 


  • 接下来,启动两个 Kafka Consumer, 分别执行如下命令


./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myTopic --from-beginning


  • 在生产者发送消息


  • 通过这个操作过程,我们能够看看到多个 Kafka Consumer 可以消费同一个主题的同一条信息,这显然就是之前课程中所介绍的,广播的概念。即多个客户端是可以获取到通一个主题的同一条信息并惊醒消费的。


  • 下面,关闭这两个 Kafka Server (ctrl + c); 然后再分别在这两个控制台窗口中执行上述同样的命令。


  • 我们发现,消费者中会显示出 Kafka Server 中myTopic 主题下已经拥有的N条历史消息。


  • 现在我们再次关闭这两个窗口中 去除 --from-beginning 那么就不会接受到历史接受到的消息。


  • 通过这个过程,实际上我们就讲述了 --from-beginning 参数的作用,它的作用是:


  • 如果消费者尚没有已建立的可用于消费的偏移量(offset),那么就从 Kafka Server 日期中最终开始消费的消息,而非最新消息开始消费。


消费者组


  • 我们停止以上的消费者然后执行如下命令


./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myTopic --group test


  • 如果我们在生产者输入"Hello World" 我们会观察到只会有一个消费者窗口收到消息,另外的消费者是无法收到消息的


  • 如果我们停掉其中一个消费者进程,那么另外一个消费者进程才能收到消息


  • 如果两个在不同的消费者组那么两个消费者进程都能收到消息


主题删除


  • 查询kafka 中已有的主题


./bin/kafka-topics.sh --list --zookeeper localhost:2181
# 返回
__consumer_offsets
myTopic
myTopic2
yourTopic


  • 删除一个主题


./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic myTopic2


  • 该输出表示:主题 myTopic2 已经被标记为删除状态。同时还给出了一个提示信息,即如果没有配置项delete.topic.enable 设为true ,那么这个删除操作将不会起任何作用。


  • 该配置在 Kafka Server 的 config 目录下的 server.properties 配置文件中进行的配置的, Kafka Server 默认是没有这个配置的。


  • 如果这个时候我们再去主题列表中查询是查询不到的


./bin/kafka-topics.sh --zookeeper localhost:2181 --list


  • 查询详细信息会抛出异常,表示该主题不存在。(如果该主题没有被完全删除那么不会有任何输出也不会报错)


./bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic myTopic2
# 输出如下
Error while executing topic command : Topic 'myTopic2' does not exist as expected
[2020-02-06 13:28:08,201] ERROR java.lang.IllegalArgumentException: Topic 'myTopic2' does not exist as expected
  at kafka.admin.TopicCommand$.kafka$admin$TopicCommand$$ensureTopicExists(TopicCommand.scala:484)
  at kafka.admin.TopicCommand$ZookeeperTopicService.describeTopic(TopicCommand.scala:390)
  at kafka.admin.TopicCommand$.main(TopicCommand.scala:67)
  at kafka.admin.TopicCommand.main(TopicCommand.scala)
 (kafka.admin.TopicCommand$)


  • 当主体被完全删除后,日志文件目录下的日志文件夹以及下面的所有文件都会被删除。


  • 从 Kafka Server 的输出日志上可以看到,Kafka Server 是先删除了主题相关的索引信息,然后删除日志信息,即数据文件


[2020-02-06 13:20:33,631] INFO Deleted log /Users/zhengsh/Desktop/kafka-logs/kafka-logs/myTopic-0.875b1d2b9a9141bab80d3c0d0a4dbecd-delete/00000000000000000000.log.deleted. (kafka.log.LogSegment)
[2020-02-06 13:20:33,645] INFO Deleted offset index /Users/zhengsh/Desktop/kafka-logs/kafka-logs/myTopic-0.875b1d2b9a9141bab80d3c0d0a4dbecd-delete/00000000000000000000.index.deleted. (kafka.log.LogSegment)
[2020-02-06 13:20:33,647] INFO Deleted time index /Users/zhengsh/Desktop/kafka-logs/kafka-logs/myTopic-0.875b1d2b9a9141bab80d3c0d0a4dbecd-delete/00000000000000000000.timeindex.deleted. (kafka.log.LogSegment)
[2020-02-06 13:20:33,673] INFO Deleted log for partition myTopic-0 in /Users/zhengsh/Desktop/kafka-logs/kafka-logs/myTopic-0.875b1d2b9a9141bab80d3c0d0a4dbecd-delete. (kafka.log.LogManager)


  • 在zookeeper 中查看主题相关的信息是否被删除


./bin/zookeeper-shell.sh localhost:2181
ls /config/topics


  • Kafka topic 删除的变化


  • 从 Kafka 1.0 开始,主题删除操作以及相关配置与之前的版本比较,发生了较大的变化。
  • 值得注意的是,在Kafka 1.0 之前的版本中,delete.topic.enable 属性默认为false , 若想删除主题,需要在server.properties 配置文件中显式


  • 增加 delete.topic.enable=true. 这个一个配置项。然而,在Kafka 1.0 中,该参数默认就是 true 因此,无需无需显式指定即可成功删除主题; 如果不希望删除主题,那么就需要显式将 delete.topic.enable=false 添加到 server.properties 的配置文件中。


  • 另外,在Kafka 1.0 之前的版本中,如果删除了主题,那么被删除的主题名字会保存到 Zookeeper 的 /admin/delete_topics 节点中。**虽然主题被删除了,但与主题相关的消息数据依然还会被保留,需要用户手动到相关的数据目录下自行删除,不过这一切在Kafka1.0 中都发生了变化,在 Kafka1.0 中,当主题被删除后,与主题相关的数据也一并删除,并且是不可逆的。**


  • 下面是Kafka 官方文档上的描述以得出的结论


  • Topic deletion is now enabled by default, since the functionality is now stable. Users who wish to retain the
  • previous behavior should set the broker config delete.topic.enable to false Keep in mind that topic deletion removes
  • data and the operation is not reversible (i.e there is no "undelete" operation)


参考资料



相关文章
|
2月前
|
消息中间件 JSON 安全
Kafka常用命令归纳
本文档详细介绍了Kafka 2.2及以上版本中Topic的操作命令,包括创建、查看、修改及删除Topic,以及动态调整主题参数和限速。此外,还涵盖了数据生产和消费的相关命令与性能测试方法,并对内部Topic(如`__consumer_offsets`和`__transaction_state`)的操作进行了说明。最后,提供了常见错误处理方案及Kafka推荐配置,帮助用户更好地管理和优化Kafka集群。
|
2月前
|
消息中间件 Kafka 测试技术
Kafka常用命令大全及kafka-console-consumer.sh及参数说明
该文章汇总了Kafka常用命令,包括集群管理、Topic操作、生产者与消费者的命令行工具使用方法等,适用于Kafka的日常运维和开发需求。
340 2
|
4月前
|
消息中间件 Java Kafka
kafka Linux环境搭建安装及命令创建队列生产消费消息
kafka Linux环境搭建安装及命令创建队列生产消费消息
108 4
|
6月前
|
消息中间件 存储 关系型数据库
探究Kafka原理-2.Kafka基本命令实操(下)
探究Kafka原理-2.Kafka基本命令实操
80 0
|
6月前
|
消息中间件 存储 运维
探究Kafka原理-2.Kafka基本命令实操(上)
探究Kafka原理-2.Kafka基本命令实操
90 0
|
6月前
|
消息中间件 存储 Kafka
kafka常用命令
kafka常用命令
|
6月前
|
消息中间件 Java Kafka
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
111 0
|
消息中间件 Kafka Apache
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
518 0
|
消息中间件 Kafka Shell
116 Kafka常用操作命令
116 Kafka常用操作命令
36 0
|
消息中间件 缓存 Java
聊聊 Kafka:协调者 GroupCoordinator 源码剖析之 GROUP、OFFSET、HEARTBEAT 相关命令
聊聊 Kafka:协调者 GroupCoordinator 源码剖析之 GROUP、OFFSET、HEARTBEAT 相关命令
186 0