Kafka - Topic命令 & 命令行操作

Kafka实战
本文介绍Kafka的基本操作命令,包括主题管理、生产者及消费者的消息发送与接收等关键步骤。通过实例演示如何创建主题、调整分区数量、发送消息及消费数据。

目录

零、前置

一、Topic命令

查看当前服务器中的所有 topic

创建 first topic

查看 first 主题的详情

修改分区数量

删除 topic

二、生产者命令行操作

发送消息

三、消费者命令行操作

消费 first 主题中的数据


零、前置

Kafka集群的搭建:Kafka + Zookeeper + Hadoop 集群配置


一、Topic命令

参数功能
--bootstrap-server连接的 Kafka Broker 主机名称和端口号
--topic操作的 topic 名称
--create创建主题
--delete删除主题
--alter修改主题
--list查看所有主题
--describe查看主题详细描述
--partitions设置分区数
--replication-factor设置分区副本
--config更新系统默认的配置

查看当前服务器中的所有 topic

注意位置:

cd /opt/module/kafka
bin/kafka-topics.sh --bootstrap-server test1:9092 --list

因为咱们还没有创建主题,所以这里是空着的。

创建 first topic

bin/kafka-topics.sh --bootstrap-server test1:9092 --create --partitions 1 --replication-factor 3 --topic first

选项说明:

--topic 定义 topic 名

--replication-factor 定义副本数

--partitions 定义分区数

查看 first 主题的详情

bin/kafka-topics.sh --bootstrap-server test1:9092 --describe --topic first

修改分区数量

注:分区数只能增加不能减少

bin/kafka-topics.sh --bootstrap-server test1:9092 --alter --topic first --partitions 3

减少时则会报错:

删除 topic

bin/kafka-topics.sh --bootstrap-server test1:9092 --delete --topic first

二、生产者命令行操作

参数描述
--bootstrap-server连接的 Kafka Broker 主机名称和端口号
--topic操作的 topic 名称

发送消息

bin/kafka-console-producer.sh --bootstrap-server test1:9092 --topic first


三、消费者命令行操作

参数描述
--bootstrap-server连接的 Kafka Broker 主机名称和端口号
--topic操作的 topic 名称
--from-beginning从头开始消费
--group指定消费者组名称

消费 first 主题中的数据

bin/kafka-console-consumer.sh --bootstrap-server test1:9092 --topic first

 可以看到这里消费不到咱们之前发的 hello world ,如果想要查看之间生产的数据需要加上 --from-beginning

bin/kafka-console-consumer.sh --bootstrap-server test1:9092 --from-beginning --topic first

加上重新进入后即可消费到之前的数据。


<think>我们正在讨论Kafka命令行工具中的消费者控制台脚本,特别是在集群环境下的使用。 用户需要了解kafka-console-consumer.sh在集群环境下的使用方式,包括命令示例。 首先,我们需要明确kafka-console-consumer.sh的基本用法,然后扩展到集群环境。 在集群环境中,我们通常会指定bootstrap-server参数,该参数可以指定集群中的一个或多个broker(通常我们会提供多个以提供容错)。 基本语法: bin/kafka-console-consumer.sh --bootstrap-server <broker_list> --topic <topic_name> [其他选项] 其中: --bootstrap-server:指定Kafka集群的broker地址,多个用逗号分隔,例如:broker1:9092,broker2:9092,broker3:9092 --topic:指定要消费的主题 其他常用选项: --from-beginning:从最早的消息开始消费,如果不指定则从最新的消息开始。 --group <group_id>:指定消费者组,如果不指定则会生成一个随机的消费者组。 --partition <partition_id>:指定消费的分区(注意:如果指定了分区,则不能使用消费者组功能,且不能同时指定多个分区) --property:设置一些属性,例如打印key(print.key=true)、打印时间戳(print.timestamp=true)等。 在集群环境下,我们通常使用--bootstrap-server来连接集群,集群会自动处理分区和副本的位置。 示例1:消费单个主题 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic 示例2:从开始位置消费 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --from-beginning 示例3:指定消费者组 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --group my-group 示例4:打印key和value(默认只打印value) bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic \ --property print.key=true --property key.separator=":" 示例5:消费特定分区(注意:此时不能使用--group,因为分区指定和消费者组互斥) bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --partition 0 示例6:使用消息过滤器(例如,只消费key不为空的消息)?注意:控制台消费者本身不提供复杂的过滤功能,但可以通过属性配置有限过滤,或者使用其他工具如kafka-filter。控制台消费者通常用于简单测试,复杂过滤建议使用API。 不过,我们可以通过--property来设置一些过滤,但原生的控制台消费者不支持SQL那样的过滤。如果需要过滤,可能需要使用kafka-console-consumer配合grep等命令行工具,但这可能不是可靠的方式(因为消息是二进制的,而grep是文本的)。 另外,在集群环境下,我们还可以使用--consumer.config指定配置文件,配置文件里可以设置更多的属性,比如安全认证等。 示例7:使用SSL认证 首先,创建一个配置文件consumer.properties,内容如下: security.protocol=SSL ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=password ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=password ssl.key.password=password 然后运行: bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic \ --consumer.config consumer.properties 注意:在集群环境下,确保bootstrap-server参数中的地址和端口是可达的,并且防火墙设置允许访问。 另外,如果集群启用了SASL认证,则需要在配置文件中配置相应的认证信息。 示例8:使用SASL/PLAIN认证 配置文件内容: security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret"; 然后同样使用--consumer.config指定。 重要提示:在实际生产环境中,不建议使用控制台消费者进行大量数据的消费,因为它仅用于测试和调试。 最后,我们总结一下在集群环境下使用kafka-console-consumer.sh的关键点: 1. 使用--bootstrap-server指定集群的多个broker地址。 2. 根据需求选择是否从开始消费(--from-beginning)或指定消费者组(--group)。 3. 需要安全认证时,通过配置文件设置安全属性。 以上是基本的使用方式和示例,用户可以根据实际集群配置进行调整。 现在,根据指令,我们需要生成相关问题。</think>### Kafka控制台消费者在集群环境下的使用指南 在Kafka集群环境下使用`kafka-console-consumer.sh`命令时,需通过`--bootstrap-server`参数指定集群节点地址,使消费者能够发现集群中的所有broker。以下是详细使用方式: #### 基础命令格式 ```bash bin/kafka-console-consumer.sh \ --bootstrap-server <broker1:port>,<broker2:port>,<broker3:port> \ --topic <topic_name> \ [其他参数] ``` #### 关键参数说明 1. **`--bootstrap-server`**(必需) 指定集群中至少2个broker地址(建议3个),多个地址用逗号分隔: ```bash --bootstrap-server kafka-node1:9092,kafka-node2:9092,kafka-node3:9092 ``` 2. **`--topic`**(必需) 指定消费的目标主题: ```bash --topic user_activity_logs ``` 3. **`--group`**(推荐) 指定消费者组实现负载均衡: ```bash --group cluster_consumer_group ``` 4. **`--from-beginning`** 从分区最早偏移量开始消费(默认从最新位置): ```bash --from-beginning ``` #### 集群环境示例 1. **基础消费**(从最新消息开始) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 \ --topic sensor_data ``` 2. **全量消费**(读取所有历史消息) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic audit_logs \ --from-beginning ``` 3. **消费者组消费** ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 \ --topic payment_events \ --group fraud_detection_group ``` 4. **带消息键消费**(显示消息Key) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic device_status \ --property print.key=true \ --property key.separator=":" ``` 5. **安全集群消费**(启用SASL认证) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic secure_logs \ --consumer.config client.properties ``` `client.properties` 文件内容: ```properties security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ username="admin" \ password="secret"; ``` #### 注意事项 1. **高可用保障** 始终配置至少2个bootstrap broker地址,防止单点故障导致消费者无法连接集群[^1]。 2. **网络可达性** 确保运行消费者的机器能访问所有broker的IP和端口(默认9092)。 3. **消费者组管理** 使用`--group`时,相同组ID的消费者会自动平衡分区分配。查看组状态: ```bash bin/kafka-consumer-groups.sh --bootstrap-server kafka1:9092 --list ``` 4. **性能限制** 控制台消费者仅适用于调试和小数据量场景,生产环境应使用API消费者[^2]。 #### 常见问题排查 - **连接失败**:检查防火墙设置和DNS解析 - **无消息消费**:确认主题存在且已发送数据,检查`--from-beginning`使用 - **认证失败**:验证`client.properties`中的凭证和协议类型 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现在作诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值