当前位置: 首页 > news >正文

【kafka】基本命令

创建 Kafka Topic 的命令

以下是创建 Kafka Topic 的几种常用方法:

1. 使用 kafka-topics.sh 基础命令(Kafka 自带工具)

bin/kafka-topics.sh --create \--bootstrap-server <broker地址:端口> \--topic <topic名称> \--partitions <分区数> \--replication-factor <副本数>
bin/kafka-topics.sh --create \--bootstrap-server localhost:9092 \--topic my_new_topic \--partitions 3 \--replication-factor 2

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test01_topic --partitions 2 --replication-factor 2

2. 带额外配置的创建命令

bin/kafka-topics.sh --create \--bootstrap-server localhost:9092 \--topic my_config_topic \--partitions 5 \--replication-factor 1 \--config retention.ms=172800000 \--config segment.bytes=1073741824

3. 使用 ZooKeeper 的旧版命令(Kafka 2.2 之前版本)

bin/kafka-topics.sh --create \--zookeeper localhost:2181 \--topic legacy_topic \--partitions 2 \--replication-factor 1

4. 使用 Kafka API (Java) 创建 Topic

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
AdminClient admin = AdminClient.create(props);NewTopic newTopic = new NewTopic("my_api_topic", 3, (short) 1);
newTopic.configs(Map.of("retention.ms", "86400000"));CreateTopicsResult result = admin.createTopics(Collections.singletonList(newTopic));
result.all().get(); // 等待创建完成

5. 验证 Topic 是否创建成功

bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-topics.sh --describe --topic my_new_topic --bootstrap-server localhost:9092

常用配置参数

可以在创建时通过 --config 指定:

  • retention.ms - 消息保留时间(毫秒)

  • `segment.bytes

查看 Kafka 所有 Topic 的命令

以下是几种查看 Kafka 中所有 Topic 的常用方法:

1. 使用 kafka-topics.sh 基础命令(推荐)

bin/kafka-topics.sh --list --bootstrap-server <broker地址:端口>
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

2. 查看所有 Topic 的详细信息(包括分区、副本等)

bin/kafka-topics.sh --describe --bootstrap-server <broker地址:端口>
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092

3. 使用 ZooKeeper 的旧版命令(Kafka 2.2 之前版本)

bin/kafka-topics.sh --list --zookeeper <zookeeper地址:端口>
bin/kafka-topics.sh --list --zookeeper localhost:2181

4. 使用 kafkacat 工具

kafkacat -L -b <broker地址:端口>
kafkacat -L -b localhost:9092

5. 使用 Kafka API (Java)

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
AdminClient admin = AdminClient.create(props);ListTopicsResult topics = admin.listTopics();
Set<String> topicNames = topics.names().get();topicNames.forEach(System.out::println);

6. 查看包含内部 Topic 的所有 Topic(如 __consumer_offsets)

bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --exclude-internal

7. 使用正则表达式过滤 Topic

bin/kafka-topics.sh --list --bootstrap-server localhost:9092 | grep "your_pattern"

注意事项

  1. 新版本 Kafka(2.2+)推荐使用 --bootstrap-server 而不是 --zookeeper

  2. 生产环境中可能需要添加认证参数,如:

    bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --command-config admin.properties
  3. 对于大型集群,列出所有 Topic 可能需要一些时间

查看 Kafka Topic 分区信息的命令

以下是几种查看 Kafka Topic 分区信息的常用方法:

1. 使用 kafka-topics.sh 工具(Kafka 自带)

bin/kafka-topics.sh --describe --topic <topic名称> --bootstrap-server <broker地址:端口>
bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server localhost:9092

2. 查看所有 topic 的分区信息

bin/kafka-topics.sh --list --bootstrap-server <broker地址:端口>
bin/kafka-topics.sh --describe --bootstrap-server <broker地址:端口>

bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server localhost:9092
 

3. 使用 kafkacat 工具

kafkacat -L -b <broker地址:端口> -t <topic名称>

4. 使用 Kafka API (Java)

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
AdminClient admin = AdminClient.create(props);DescribeTopicsResult result = admin.describeTopics(Collections.singletonList("my_topic"));
TopicDescription description = result.all().get().get("my_topic");description.partitions().forEach(partition -> {System.out.println("Partition: " + partition.partition());System.out.println("Leader: " + partition.leader());System.out.println("Replicas: " + partition.replicas());System.out.println("ISR: " + partition.isr());
});

输出信息解释

Topic: my_topic	PartitionCount: 3	ReplicationFactor: 2	Configs:Topic: my_topic	Partition: 0	Leader: 1	Replicas: 1,2	Isr: 1,2Topic: my_topic	Partition: 1	Leader: 2	Replicas: 2,0	Isr: 2,0Topic: my_topic	Partition: 2	Leader: 0	Replicas: 0,1	Isr: 0,1

其中:

  • PartitionCount: 分区总数

  • ReplicationFactor: 副本因子数

  • Leader: 负责该分区读写的主 broker

  • Replicas: 该分区的所有副本所在的 broker

  • Isr: 同步中的副本(In-Sync Replicas)

相关文章:

  • [吾爱出品] pdf提取工具,文本、表格、图片提取
  • 从算力困境到创新突破:GPUGEEK如何重塑我的AI开发之旅
  • JESD204 ip核使用与例程分析(一)
  • Coze 实战教程 | 10 分钟打造你的AI 助手
  • 高精度降压稳压技术在现代工业自动化中的应用
  • [Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化
  • 基于FPGA的车速检测系统仿真设计与实现
  • 降本增效双突破:Profinet转Modbus TCP助力包布机产能与稳定性双提升
  • Java 开源报表系统全解析:免费工具、企业案例与集成实践
  • 【Redis】双向链表结构
  • STM32 DMA技术深度解析:从原理到实战应用讲解
  • TCP 粘包
  • TCP实现安全传输的核心机制 + TCP的报文讲解(全程图文讲解)
  • 工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解
  • 2025年渗透测试面试题总结-阿里云[实习]阿里云安全-安全工程师(题目+回答)
  • 典型的**N+1查询问题**
  • 云原生数据库排障新挑战:AI驱动与分布式架构深度解析
  • 区块链blog1__合作与信任
  • U盘启动CentOS安装与网卡驱动修复指南
  • 实战分析Cpython逆向
  • 申论|空间更新结合“青银共生”,助力青年发展型城区建设
  • 呼吸医学专家杜晓华博士逝世,终年50岁
  • 秦洪看盘|指标股发力,A股渐有突破态势
  • 外交部:中方对美芬太尼反制仍然有效
  • KPL“王朝”诞生背后:AG和联赛一起迈向成熟
  • 广州一饮品店取名“警茶”?市监局:取名没问题,但图像会产生误解