我有一个当地的 Docker 示例,其中有3个Zookeeper和3个Kafka经纪人 1.0.0
以确保更新我们的环境将按预期工作。我在Kafka上创建了一个流处理器 1.0.0
,它不消耗或产生任何主题-它只是初始化自己。
当我尝试运行此处理器时,收到以下错误消息:
Exception in thread "main" org.apache.kafka.streams.errors.BrokerNotFoundException:
Could not find any available broker.
Check your StreamsConfig setting 'bootstrap.servers'.
This error might also occur, if you try to connect to
pre-0.10 brokers. Kafka Streams requires broker version 0.10.1.x or higher.
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.ensureOneNodeIsReady(StreamsKafkaClient.java:251)
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.getAnyReadyBrokerId(StreamsKafkaClient.java:280)
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.checkBrokerCompatibility(StreamsKafkaClient.java:348)
at org.apache.kafka.streams.KafkaStreams.checkBrokerVersionCompatibility(KafkaStreams.java:712)
at org.apache.kafka.streams.KafkaStreams.start(KafkaStreams.java:746)
at com.overdrive.dataIntegration.ProcessorRunner$StandardProcessorRunner.StartApplication(ProcessorRunner.scala:29)
at com.overdrive.streams.StreamProcessor$.main(StreamProcessor.scala:22)
at com.overdrive.streams.StreamProcessor.main(StreamProcessor.scala)
我的docker示例是 localzoo1:2181
通过 localzoo3:2183
,以及 localkafka1:9092
通过 localkafka3:9094
. 启用调试模式后,我可以看到流处理器的配置正在正确加载:
[2018-01-19 16:09:09,824] INFO [main] StreamsConfig values:
application.id = test-stream-processor
application.server =
bootstrap.servers = [localkafka1:9092]
//more values available upon request
我不认为这是docker的问题,原因有两个:(1)当docker在版本上运行kafka集群时,这个精确的设置工作得很好 0.11
,流处理器也打开 0.11
,并且(2)我还创建了一个本地kafka代理,而不是在docker中,并且得到了相同的错误。
如果我创建一个控制台使用者,如果我使用正确的主机名,它不会输出任何内容(在我的例子中, localkafka1:9092
),如果我使用了不正确的主机名(如 defg:9092
),它会很快出错。我所有的主题都是空的,所以很难知道它有多远。我无法在主题中放置任何数据,因为似乎没有任何内容能够完全解析到集群的连接。
最后,我一直在研究kafka代码,添加print语句,然后替换处理器中的jar并运行它。由此看来,节点状态 NetworkClient
(英寸 org.apache.kafka.clients
)陷入困境 CHECKING_API_VERSIONS
状态。有趣的是,它看起来像 discoverBrokerVersions
在需要时为final,以便在轮询过程中将其设置为false。进行此更改允许处理器连接到代理。
总而言之,我发现很难相信我在1.0版中发现了一个阻止所有流处理器连接到代理的bug,但是修改代码已经让事情开始工作(或者,至少,完全建立连接)。这是已知的问题吗?在这段时间里,有没有什么奇怪的变化 0.11
以及 1.0.0
?
更新:此错误仅在通过wsl运行流处理器时发生;通过powershell运行它很好。
1条答案
按热度按时间rxztt3cl1#
异常也可以说流应用程序和kafka代理程序之间没有网络连接。由于我们遇到了相同的问题,我们首先尝试从流应用程序所在的主机ping到kafka代理所在的主机。