执行 Kafka 主题命令时出错:等待节点分配超时。操作系统 Win 10

P.S*_*wat 6 apache-kafka

我已经在 Windows 10 上配置了 kafka_2.11-2.3.0 和 apache-zookeeper-3.5.5-bin。但是在运行主题创建命令时,我收到以下错误:

C:\kafka_2.11-2.3.0>.\bin\windows\kafka-topics.bat --create --bootstrap-server 127.0.0.1:2181 --partitions 1 --replication-factor 1 --topic testD1
Error while executing topic command : org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
[2019-10-14 16:42:40,603] ERROR java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
        at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
        at org.apache.kafka.common.internals.KafkaFutureImpl.access$000(KafkaFutureImpl.java:32)
        at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
        at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
        at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:178)
        at kafka.admin.TopicCommand$TopicService$class.createTopic(TopicCommand.scala:149)
        at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:172)
        at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
        at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
Run Code Online (Sandbox Code Playgroud)

阅读 stackoverflow 中的某处以在 server.properties 文件中添加 listeners=PLAINTEXT://127.0.0.1:9092 但这没有按预期工作。

小智 35

Zookeeper运行在2181上,而不是Kafka(引导服务器)上

默认情况下,Kafka 在端口9092上运行,如下所示

kafka-topics --bootstrap-server 127.0.0.1:9092 --topic first_topic --create --partitions 3 --replication-factor 1

Run Code Online (Sandbox Code Playgroud)


小智 6

我在 linux 上遇到了同样的问题。创建主题的推荐方式仍然是通过代理,您不需要直接连接到zookeeper。

事实证明,在连接到 TLS 端点时,shell 脚本需要更多配置:

  1. 将 jdk 链接的证书复制到临时位置:
cp /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts /tmp/kafka.client.truststore.jks
Run Code Online (Sandbox Code Playgroud)
  1. 制作一个属性文件(例如client.properties)
security.protocol=SSL
ssl.truststore.location=/tmp/kafka.client.truststore.jks
Run Code Online (Sandbox Code Playgroud)

然后尝试再次运行脚本,同时通过--command-config属性文件传递选项,例如:

./kafka-topics.sh --bootstrap-server <server>:<port> --list --command-config client.properties
Run Code Online (Sandbox Code Playgroud)

请注意,不同脚本之间的选项不一致,对于控制台使用者/生产者,您需要: --consumer.config--producer.config


P.S*_*wat 3

在此输入图像描述 用 Zookeeper 替换 bootstrap-server 解决了这个问题。

  • 我按照 2.5 版本的快速入门指南 (https://kafka.apache.org/quickstart) 进行操作。它仍然无法与 --bootstrap-server 一起使用。它与 --zookeeper localhost:2181 一起使用。它不能与 --bootstrap-server 一起使用的原因是什么? (6认同)
  • 从 Kafka 2.2.0 开始,首选方法是使用 `--bootstrap-server` (请参阅 https://issues.apache.org/jira/browse/KAFKA-7433),因为它消除了直接连接到 ZK 的需要。所以这个答案并不是真正的答案。也许您安装了 2.3 客户端,但您的 Kafka _server_ 仍然 &lt; 2.2.0 ? (2认同)
  • 请不要使用这个。Zookeeper 是一个已弃用的标志,很快就会被完全删除 (2认同)