温馨提示×

ubuntu kafka配置怎样配置主题

小樊
34
2026-10-02 15:17:58
栏目: 智能运维

在 Ubuntu 上配置 Kafka 主题(Topic),通常分为 使用命令行方式 和 服务端配置方式 两类。下面以 Kafka 3.x(Kafka 自带 ZooKeeper 或 KRaft 模式) 为例说明。


一、前提条件

确保你已经:

  • 安装好 Kafka(如 /opt/kafka 或 /usr/local/kafka)
  • Kafka 服务已启动
  • 知道 Kafka 的 bootstrap-server(如 localhost:9092)

二、使用命令行创建主题(最常用)

1️⃣ 启动 Kafka(若未启动)

# ZooKeeper 模式
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &

# KRaft 模式
bin/kafka-server-start.sh config/kraft/server.properties &

2️⃣ 创建一个主题

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

参数说明:

  • --topic:主题名
  • --partitions:分区数
  • --replication-factor:副本数(不能大于 broker 数量)

3️⃣ 查看主题列表

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

4️⃣ 查看主题详情

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

5️⃣ 修改主题配置(如分区数)

bin/kafka-topics.sh \
  --alter \
  --topic test-topic \
  --partitions 5 \
  --bootstrap-server localhost:9092

⚠️ 分区数只能 增加不能减少


6️⃣ 删除主题

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

⚠️ 需确保:

delete.topic.enable=true

三、主题级配置(高级)

1️⃣ 创建时指定配置

bin/kafka-topics.sh \
  --create \
  --topic test-topic \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 1 \
  --config retention.ms=604800000 \
  --config cleanup.policy=delete

常用配置:

  • retention.ms:消息保留时间
  • retention.bytes:最大存储大小
  • cleanup.policy:delete / compact

2️⃣ 修改主题配置

bin/kafka-configs.sh \
  --bootstrap-server localhost:9092 \
  --entity-type topics \
  --entity-name test-topic \
  --alter \
  --add-config retention.ms=86400000

四、服务端默认主题配置(server.properties)

编辑:

vim config/server.properties

示例:

num.partitions=3
default.replication.factor=1
log.retention.hours=168

修改后需 重启 Kafka。


五、自动创建主题(不推荐生产环境)

auto.create.topics.enable=true

六、常见问题

❓ 报错 replication factor larger than available brokers

副本数 > broker 数量

❓ 主题删不掉

  • 检查 delete.topic.enable=true
  • 检查是否有消费者/生产者连接

如果你告诉我:

  • Kafka 版本
  • 是否使用 KRaft / ZooKeeper
  • 单节点还是集群

我可以给你 更精确的配置示例。

0 踩