kafka系列-入门篇之常用命令

本文详细介绍如何在MacOS环境下启动Kafka Broker,创建、修改及删除Topic,并通过命令行工具进行消息生产和消费。此外还介绍了如何在同一台服务器上启动多个Broker,并确保数据高可用性的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文所有的操作都是在MacOS系统上使用。如果是在Linux操作系统下进行实验,使用的命令是相同的;如果是在windows操作系统下进行实验,则需要使用对应的bin/windows目录下的bat文件。


Broker

启动

bin/kafka-server-start.sh --daemon config/server.properties

启动kafka命令加上–daemon,那么kafka会以守护进程的方式启动

查看启动是否成功

jps -l

可以看到下图有三个进程,分别是zookeeper、jps和kafka
查看kafka进程

停止

bin/kafka-server-stop.sh config/server.properties

启动多个broker

如果像在同一台服务器启动多个broker可以复制多份config/server.propoerties文件
broker properties files

这里我复制了三份server.properties文件,这样我可以启动三个broker。在启动broker之前,需要先修改server.properties文件中的三个属性,broker.id、listeners和log.dirs,保证这三个属性不同。
这里写图片描述
现在就可以启动三个kafka broker服务了

bin/kafka-server-start.sh --daemon config/server1.properties
bin/kafka-server-start.sh --daemon config/server2.properties
bin/kafka-server-start.sh --daemon config/server3.properties

Topic

新建

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic demo --partitions 10 --replication-factor 3

–zookeeper指定zookeeper的地址和端口,–partitions指定partition的数量,–replication-factor指定数据副本的数量。也就是说,如果有100条数据,会被切分成10份,每一份有三个副本,存放在不同的partition里。
create_topic

查看所有topic列表

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

这里我一共建了三个topic
这里写图片描述

查看指定topic明细

bin/kafka-topics.sh --zookeeper localhost:2181 --desc --topic demo

从第一排可以看到topic的名称,partition数量,副本数量。使用3份副本,就是保证数据的可用性,即使有两台broker服务器挂了,也能保证kafka的正常运行。从第二排开始,表格包含了五列,显示partition的情况,分别表示:topic名称、partition编号,此partions的leader broker编号,副本存放的broker编号,同步broker编号。因为我们开启了三个broker服务,对应的broker.id分别为0、1、2,而每个partion有三个副本,所以就有把所有的broker都使用了,只不过每个partition的leader不同。
这里写图片描述
下面的demo2,我创建的时候,配置了2个副本,10个partition。可以看出每个partition的3个副本会均衡的,分布在3台broker服务器上。

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic demo2 --partitions 10 --replication-factor 2

这里写图片描述
如果读者还是没有太明白也没有关系,我会在后面的文章中详细介绍partition是如何存放的。

修改

下面命令,增加partion数量,从10个partition增加到20个

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic demo --partitions 20

这里写图片描述
但是减少partition是不允许的。如果执行配置的partition变少,会抛出一个错误,显示partition数量只能增加
这里写图片描述

删除

删除之前,需要先将server.properties文件中的配置delete.topic.enable=true更改一下,否则执行删除命令不会生效。

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

这里写图片描述
可以看到上面的topic只是被标记删除。如果该topic还在有数据交换,那么查看topic list的时候,会显示该topic为标记删除。直到没有客户端使用该topic,才会真正的被删除。
这里写图片描述


Producer

这个比较简单,执行下面命令就可以生产数据了

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic demo

Consumer

同样地这个也比较简单,执行下面命令就可以消费数据了

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic demo

如果加上from-beginning指定从第一条数据开始消费

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic demo --from-beginning

总结

本节主要都是kafka的常用命令,只有了解到kafka的运行原理,才能真正掌握kafka。除了这些还要一些命令如数据迁移、优化leader、查看消费组等,会在后面的文章分别讲解。

<think>嗯,用户想学习Kafka的基础知识,需要提供一个入门教程。首先,我应该先回顾一下Kafka的核心概念,比如主题、生产者、消费者、Broker这些。记得用户给的引用里有提到Leader和partition,得把这些内容整合进去。 然后,按照用户的要求,回答要结构清晰,分步骤来。可能需要从安装配置开始,接着是基本操作,比如创建主题、发送和消费消息。用户提供的引用里提到了如何查看topic和发送消息的命令,这些具体命令要包含进去,确保正确性。 还要注意用户提到的引用标识,在相关内容后面自然地加上引用标记。比如在解释Leader的时候引用[^4],在提到Kafka应用场景时引用[^2]。同时,所有数学表达式要用$...$格式,虽然Kafka教程可能涉及的不多,但如果有比如参数配置中的数值,可能需要用这个格式。 接下来,用户需要生成相关问题,可能需要根据Kafka的基本概念、安装配置、应用场景等方面来提问。例如,如何保证数据可靠性,或者Kafka与其他消息队列的区别,这些是常见的问题。 另外,要确保使用中文回答,LaTeX语法正确。虽然Kafka内容可能较少涉及数学公式,但如果有参数或配置项中的数值,需检查是否符合格式。例如,端口号9092可能需要用$9092$?不过可能不需要,因为不是数学表达式,这里可能用户示例中的变量是数学相关的,但Kafka配置中的数字可能不需要,所以可能不需要加$符号。需要仔细看用户给的示例,示例中的代码块是Python,而数学表达式用$...$,所以可能Kafka教程中的命令不需要,保持原样即可。 最后,确保回答真实可靠,引用用户提供的站内引用,正确对应到相关部分。比如在解释Kafka的应用时引用,在提到创建topic的命令时引用[^3]。同时,用户给的引用[1]是关于KAFKA_ADVERTISED_LISTENERS的配置,可能在安装配置部分提到,并引用[^1]。 总结步骤:介绍核心概念,安装配置步骤,基本操作命令,应用场景,然后相关问题。每个部分引用对应的引用标记,确保命令正确无误,结构清晰分点说明。</think># Kafka入门教程 ## 一、核心概念 1. **Broker**:Kafka集群中的单个服务器节点,负责消息存储和转发[^2] 2. **Topic**:消息的类别/主题,生产者向指定Topic发送消息,消费者订阅Topic获取消息 $$ \text{物理存储结构}=Partition+Replica $$ 3. **Partition**:每个Topic划分为多个分区,实现并行处理和水平扩展。每个分区的消息按顺序存储 4. **Producer/Consumer**:生产者发布消息到Topic,消费者订阅并处理消息 ## 二、安装配置 1. 下载最新版Kafka(当前3.3.1) 2. 修改配置文件`server.properties`: ```properties listeners=PLAINTEXT://:9092 advertised.listeners=PLAINTEXT://your_server_ip:9092 # 引用[1] zookeeper.connect=localhost:2181 ``` ## 三、基础操作 1. **创建Topic**: ```bash ./kafka-topics.sh --create --topic test_topic \ --partitions 3 --replication-factor 1 \ --bootstrap-server localhost:9092 # 引用[3] ``` 2. **发送消息**: ```bash ./kafka-console-producer.sh --topic test_topic \ --bootstrap-server localhost:9092 ``` 3. **消费消息**: ```bash ./kafka-console-consumer.sh --topic test_topic \ --from-beginning --bootstrap-server localhost:9092 ``` ## 四、应用场景 1. 网站活动追踪:处理页面浏览、搜索等实时数据流 2. 日志聚合:集中处理分布式系统日志[^2] 3. 流式处理:与Spark/Flink集成实现实时计算
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值