温馨提示×

Linux Kafka如何创建主题

小樊
36
2026-08-28 04:48:58
栏目: 智能运维

在 Linux 上创建 Kafka 主题(Topic),通常是通过 Kafka 自带的命令行工具完成的。下面是最常用、最清晰的做法


一、前提条件

  1. Kafka 已安装并启动
    • Zookeeper(老版本)或 Kafka 内置控制器(新版本 KRaft)
  2. 知道:
    • Kafka 监听地址(如 localhost:9092
    • Kafka 安装目录(如 /opt/kafka/usr/local/kafka

二、使用 kafka-topics.sh 创建主题(最常用)

1️⃣ 基本创建命令

cd /opt/kafka/bin
./kafka-topics.sh --create \
  --topic test-topic \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 1

参数说明

参数 说明
--create 创建主题
--topic 主题名称
--bootstrap-server Kafka 服务地址
--partitions 分区数
--replication-factor 副本数

推荐:Kafka 2.2+ 使用 --bootstrap-server 而不是 --zookeeper


三、查看主题是否创建成功

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

查看主题详情:

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

四、使用 Zookeeper 创建(老版本 Kafka)

⚠️ 仅适用于 Kafka < 2.2 或仍使用 Zookeeper 的集群

./kafka-topics.sh --create \
  --topic test-topic \
  --zookeeper localhost:2181 \
  --partitions 3 \
  --replication-factor 1

五、创建主题时常用高级参数

1️⃣ 指定副本分配策略

--replica-assignment 0:1:2,1:2:0

2️⃣ 设置 topic 级别参数

--config retention.ms=86400000
--config segment.bytes=1073741824

示例:

./kafka-topics.sh --create \
  --topic test-topic \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 2 \
  --config retention.ms=86400000

六、验证是否能收发消息

发送消息

./kafka-console-producer.sh \
  --topic test-topic \
  --bootstrap-server localhost:9092

消费消息

./kafka-console-consumer.sh \
  --topic test-topic \
  --from-beginning \
  --bootstrap-server localhost:9092

七、常见错误及解决

replication factor larger than available brokers

原因:副本数 > broker 数量
✅ 解决:

--replication-factor 1

Topic already exists

✅ 可先删除:

./kafka-topics.sh --delete \
  --topic test-topic \
  --bootstrap-server localhost:9092

八、总结(最简单模板)

kafka-topics.sh --create \
  --topic my-topic \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 1

如果你愿意,可以告诉我:

  • Kafka 版本
  • 是否使用 KRaft(无 Zookeeper)
  • 单机还是集群

我可以给你更精确、可复制的命令

0