温馨提示×

debian kafka怎样配分区

小樊
40
2026-09-28 02:17:39
栏目: 智能运维

在 Debian 上配置 Kafka 的分区(partition),通常分为几种场景:创建 topic 时指定分区数、修改已有 topic 的分区数、以及服务端(broker)层面的相关配置。下面按常见用法说明。


一、前提条件(Debian 上 Kafka 已安装)

一般 Kafka 解压在:

/opt/kafka

或

/usr/local/kafka

进入 Kafka 目录(以 /opt/kafka 为例):

cd /opt/kafka

二、创建 Topic 时配置分区

1️⃣ 使用 kafka-topics.sh

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

说明:

  • --partitions 3:指定 3 个分区
  • --replication-factor 1:副本数(生产环境一般 ≥2)

✅ 分区数创建后只能增加,不能减少


三、查看 Topic 分区情况

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

输出示例:

Topic: test-topic PartitionCount: 3 ReplicationFactor: 1

四、修改已有 Topic 的分区数(扩容)

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

⚠️ 注意:

  • 只能增加分区
  • 已存在的消息不会重新分布
  • 如果使用了 key,key 的路由会变化

五、Broker 级别的分区相关配置(server.properties)

编辑:

vi /opt/kafka/config/server.properties

常用配置:

# 默认分区数(新建 topic 未指定时使用)
num.partitions=3

# 是否允许自动创建 topic(含默认分区)
auto.create.topics.enable=true

修改后重启 Kafka:

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

六、生产 / 消费时的分区策略

1️⃣ 生产者指定 key(按 key 哈希分区)

producer.send(new ProducerRecord<>("test-topic", "key1", "value1"));

2️⃣ 自定义分区器

实现:

org.apache.kafka.clients.producer.Partitioner

七、Debian 常见问题

✅ 端口问题

Debian 防火墙:

ufw allow 9092

✅ 主机名问题

server.properties 中:

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://your-host-ip:9092

八、总结

场景 命令
创建分区 --partitions N
查看分区 --describe
增加分区 --alter --partitions N
默认分区 num.partitions

如果你愿意,我可以:

  • 给你一份 Debian + Kafka 完整部署教程
  • 或针对 生产环境分区数怎么规划 给建议

0 踩