Kafka基本操作命令

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Kafka基本操作命令

一、任务描述

本实验任务主要完成基于ubuntu环境掌握Kafka基本操作命令的工作。通过完成本实验任务,要求学生熟练掌握Kafka基本操作命令,为后续实验的开展奠定Kafka平台基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。


二、任务目标

1、掌握基于Kafka基本操作命令


三、任务环境

Ubuntu(三台节点:mater,slave1,slave2)、Zookeeper3.4.5、Kafka2.9.2


四、任务分析

Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。


0d20a21e33094d65b6c2d67c4a163849.png

一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行“随机读写“。

44e5c9d6e6364c6d8b4ae06f49aad88f.png


kafka和JMS(Java Message Service)实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除.日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘IO开支。

 对于consumer而言,它需要保存消费消息的offset,对于offset的保存和使用,有consumer来控制;当consumer正常消费消息时,offset将会”线性”的向前驱动,即消息将依次顺序被消费.事实上consumer可以使用任意顺序消费消息,它只需要将offset重置为任意值。

 kafka集群几乎不需要维护任何consumer和producer状态信息,这些信息有zookeeper保存;因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响。

 partitions的设计目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力。

 Producer将消息发布到指定的Topic中,同时Producer也能决定将此消息归属于哪个partition;比如基于”round-robin”方式或者通过其他的一些算法等。

 本质上kafka只支持Topic.每个consumer属于一个consumer group;反过来说,每个group中可以有多个consumer.发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费。

 如果所有的consumer都具有相同的group,这种情况和queue模式很像;消息将会在consumers之间负载均衡。

 如果所有的consumer都具有不同的group,那这就是发布-订阅;消息将会广播给所有的消费者。

 在kafka中,一个partition中的消息只会被group中的一个consumer消费;每个group中consumer消息消费互相独立;我们可以认为一个group是一个”订阅”者,一个Topic中的每个partions,只会被一个”订阅者”中的一个consumer消费,不过一个consumer可以消费多个partitions中的消息.kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺序的.事实上,从Topic角度来说,消息仍不是有序的。

 kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。

 我们的任务是:


学会使用Kafka基本操作命令。

五、 任务实施

步骤1、Kafka基本操作命令

进入到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。如图1所示。

c6ec8ca6e0ca4cd59f65a8104aed07c3.png



图1 启动Zookeeper集群

 利用【./zkServer.sh status】查看Zookeeper节点状态。如图2所示。


9de562d42f6343378f2e46ca77221fb0.png


图2 master查看Zookeeper节点状态

 进入到kafka bin文件下,通过命令【./kafka-server-start.sh ../config/server.properties】来启动服务。如图3所示。


45e6e9b516f14bfda8342916b59c2799.png


图3 启动Kafka

 查看是否启动。在各个节点重启终端,执行【jps】命令,可以看到新启动进程。如图4所示。


02b2ab4c46d64c6bb23e394880882aa6.png


图4 master查看进程

 在主节点master创建topic。执行【./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test】命令。如图5所示。


a612711453a34f78ab2f970a39e266ab.png


图5 创建topic

♥ 温馨提示

name Value
–create: 指定创建topic动作。
–topic: 指定新建topic的名称。
–zookeeper: 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样。
–config: 指定当前topic上有效的参数值。
–partitions: 指定当前创建的kafka分区数量,默认为1个。
–replication-factor: 指定每个分区的复制因子个数,默认1个。

在主节点master查看所有topic。执行【./kafka-topics.sh --list --zookeeper localhost:2181】 命令。如图6所示。

ae76cd5ad6cd4c18833917c15dadbb45.png

图6 查看所有topic

 在主节点master查看指定topic的详细信息。执行【./kafka-topics.sh --list --zookeeper localhost:2181 】命令。如图7所示。


d3c8cb59f5cd4422a7a1541d5ec5cff2.png


图7 查看指定topic

♥ 温馨提示

name Value
–describe 指定是展示详细信息命令。
–zookeeper 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样。
–topic 指定需要展示数据的topic名称。

创建生产者并向test主题发送消息。执行【/simple/kafka/bin# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test】命令。如图8所示。

c5305733cbe2488780aa248d308466b7.png



图8 创建生产者

 新开启一个终端创建消费者者并消费消息。执行【./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning】命令。如图9所示。


2a630d5ada424877a691d5af1d3f8b73.png


图9 创建消费者

 新开启一个终端查看topic某分区偏移量最大(小)值,time为-1时表示最大值,time为-2时表示最小值。执行【./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list localhost:9092 --partitions 0】命令。如图10所示。


d11838cfbfca4edcb8cea03b3f13885a.png


图10 查看偏移量

 在主节点master增加topic分区数。执行【./kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --partitions 10】命令。如图11所示。


10b8e4b1a3c846c3ae61a939e6643de3.png


图11 增加topic分区数


♥ 温馨提示


Kafka分区数量只允许增加,不允许减少。

 在主节点master删除topic,慎用,只会删除zookeeper中的元数据,消息文件须手动删除。执行【./kafka-topics.sh --delete --zookeeper localhost:2181 --topic test】命令。如图12所示。

6f2b1dfc925c4608b411a6c4808e2c4e.png



图12 删除topic


♥ 温馨提示


默认情况下,删除是标记删除,没有实际删除这个Topic;如果运行删除Topic,两种方式:

方式一:通过delete命令删除后,手动将本地磁盘以及zk上的相关topic的信息删除即可

方式二:配置vim server.properties文件,给定参数delete.topic.enable=true,重启kafka服务,此时执行delete命令表示允许进行Topic的删除


♥ 知识链接

每一个分区(partition)都是一个顺序的、不可变的消息队列,并且可以持续的添加。分区中的消息都被分了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。Kafka集群保持所有的消息,直到它们过期,无论消息是否被消费了。实际上消费者所持有的仅有的元数据就是这个偏移量,也就是消费者在这个log中的位置。 这个偏移量由消费者控制。 一个消费者的操作不会影响其它消费者对此log的处理。 Kafka中采用分区的设计有几个目的。可以处理更多的消息,不受单台服务器的限制。Topic拥有多个分区意味着它可以不受限的处理更多的数据。


4da4028047c64f8fa7d592b330675fba.png

相关文章
|
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的日常运维和开发需求。
380 2
|
4月前
|
消息中间件 Java Kafka
kafka Linux环境搭建安装及命令创建队列生产消费消息
kafka Linux环境搭建安装及命令创建队列生产消费消息
110 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_配置参数详解_基本命令实操
112 0
|
消息中间件 Kafka Apache
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
520 0
|
消息中间件 Kafka Shell
116 Kafka常用操作命令
116 Kafka常用操作命令
36 0
|
消息中间件 缓存 Java
聊聊 Kafka:协调者 GroupCoordinator 源码剖析之 GROUP、OFFSET、HEARTBEAT 相关命令
聊聊 Kafka:协调者 GroupCoordinator 源码剖析之 GROUP、OFFSET、HEARTBEAT 相关命令
186 0

相关实验场景

更多
下一篇
无影云桌面