Kafka-Streams应用启动报unknown topic or partition错误求助
Kafka Streams应用对接3节点集群时出现“未知主题或分区”错误排查
问题背景
部署Kafka Streams应用对接3节点Kafka集群时,集群运行正常,bootstrap.servers配置正确,但启动应用后持续收到unknown topic or partition error错误。已设置Kafka的auto.create.topics.enable=true,且通过kafka-topics.sh确认Changelog和Repartition主题已存在,但问题仍未解决。
相关配置与日志
Docker YAML配置
#KV STORE Instance kvstore1gcf102: image: kafka-kv-store:1.1.125 restart: always hostname: kvstore_13_1_gcf102 ports: - 7071:8080 environment: APPLICATIONID_KVSTORE: "kafka-kv-store-gcf102" HOSTNAME_KVSTORE: "kvstore_13_1_gcf102" STREAMPROPS_KVSTORE: "bootstrap.servers=192.168.2.13:9092,192.168.2.14:9092,192.168.2.16:9092 num.standby.replicas=0" TOPIC_KVSTORE: "messages_shown"
错误日志
18:31:11,637 WARN org.apache.kafka.clients.consumer.internals.Fetcher - [Consumer clientId=kafka-kv-store-gcf102-ab44b41c-71cb-4cfa-926a-898cdfbb192c-StreamThread-1-consumer, groupId=kafka-kv-store-gcf102] Received unknown topic or partition error in ListOffset request for partition kafka-kv-store-gcf102-shown-count-kv-repartition-0
主题查询结果
root@SRV-003:~/tmp# /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.2.13:9092 | grep kafka-kv-store-gcf102 kafka-kv-store-gcf102-shown-count-kv-changelog kafka-kv-store-gcf102-shown-count-kv-repartition
排查与解决方案
检查主题分区状态:虽然主题已存在,但目标分区
-0可能未成功创建或处于不可用状态。执行以下命令查看主题详细信息:/opt/kafka/bin/kafka-topics.sh --describe --bootstrap-server 192.168.2.13:9092 --topic kafka-kv-store-gcf102-shown-count-kv-repartition重点确认分区
0的Leader、Replicas和Isr状态,若Leader不可用或Isr列表为空,需排查集群节点状态或副本同步问题。验证应用权限:应用运行身份可能缺少目标主题的读取权限。检查ACL配置:
/opt/kafka/bin/kafka-acls.sh --list --bootstrap-server 192.168.2.13:9092 --topic kafka-kv-store-gcf102-shown-count-kv-repartition确保应用对应的客户端ID或用户拥有
Read权限,缺失则添加对应ACL规则。排查集群元数据同步:多节点集群可能存在元数据同步延迟,导致应用连接的节点未获取最新主题信息。可尝试:
- 重启Kafka Streams应用,触发元数据重新拉取
- 检查集群控制器节点运行状态,确认控制器正常工作
修正主题创建参数:自动创建的主题可能不符合应用所需的分区数/副本数,导致应用请求的分区不存在。可手动删除后重新创建主题:
/opt/kafka/bin/kafka-topics.sh --delete --bootstrap-server 192.168.2.13:9092 --topic kafka-kv-store-gcf102-shown-count-kv-repartition /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.2.13:9092 --topic kafka-kv-store-gcf102-shown-count-kv-repartition --partitions 1 --replication-factor 3注意根据集群实际配置调整分区数和副本数。
检查网络连通性:应用容器与Kafka节点可能存在网络隔离,导致无法访问特定节点上的分区。在容器内测试连通性:
docker exec -it kvstore1gcf102 ping 192.168.2.13 docker exec -it kvstore1gcf102 nc -zv 192.168.2.13 9092确保所有集群节点的9092端口都能正常访问。
内容的提问来源于stack exchange,提问作者user3008410
相关产品推荐
相关产品推荐

