我不确定这个论坛是否是一个正确的问题。我们使用Storm KafkaSpout连接器使用Storm的Kafka主题。到目前为止工作正常。现在,我们应该从版本为0.10.x
的同一个Storm env连接到具有升级版本0.10.x
的新Kafka群集。
从风暴文档(http://storm.apache.org/releases/1.1.0/storm-kafka-client.html)我可以看到风暴1.1.0
与支持新Kafka消费者API的Kafka 0.10.x
兼容。但在那种情况下,我无法在最终运行拓扑(如果我错了,请纠正我)。
这有什么工作吗?
我已经看到,即使New Kafka Consumer API已经删除了ZooKeeper依赖项,但我们仍然可以通过传递Kafka-console-consumer.sh
标志而不是新的--zookeeper
标志来使用旧–bootstrap-server
来消息来自它的消息(推荐的)。我使用Kafka 0.9运行此命令,并且能够使用Kafka 0.10.x上托管的主题进行消费
当我们尝试连接时获得以下异常:
java.lang.RuntimeException: java.lang.RuntimeException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /brokers/topics/mytopic/partitions
at storm.kafka.DynamicBrokersReader.getBrokerInfo(DynamicBrokersReader.java:81) ~[stormjar.jar:?]
at storm.kafka.trident.ZkBrokerReader.<init>(ZkBrokerReader.java:42) ~[stormjar.jar:?]
但是我们能够连接到远程ZK服务器并验证路径是否存在:
./zkCli.sh -server remoteZKServer:2181
[zk: remoteZKServer:2181(CONNECTED) 5] ls /brokers/topics/mytopic/partitions
[3, 2, 1, 0]
正如我们上面所看到的,它为我们提供了预期的输出,因为主题中有4个分区。
此时有以下问题:
1)是否可以使用Storm版本0.10.x
连接到Kafka 0.10.x
?有人试过吗?
2)即使我们能够使用,我们还是需要进行任何代码更改,以便在拓扑关闭/重启时检索消息偏移。我问这个问题,因为我们将传递Zk群集详细信息而不是旧KafkaSpout版本支持的代理信息。
这里的选项用完了,任何指针都会受到高度赞赏
更新
我们能够在使用eclipse在本地运行时从远程Kafka主题连接和使用。为了确保风暴不使用内存中的zk,我们使用了重载的构造函数LocalCluster("zkServer",port)
,它工作正常,我们可以看到数据即将到来。这使我们得出结论,版本兼容性可能不是这里的问题。
但是在群集中部署拓扑时仍然没有运气。 我们已经验证了从暴风箱到zkservers的连接 znode似乎也很好..
此时确实需要一些指针,这可能是错误的,我们如何调试?从来没有和Kafka 0.10x合作过,所以不确定我们到底错过了什么。
非常感谢一些帮助和建议
答案 0 :(得分:1)
Storm 0.10x与Kafka 0.10x兼容。我们仍然可以使用依赖于基于zookeeper的偏移存储机制的旧KafkaSpout
。
连接丢失异常即将到来,因为我们试图访问一个不允许/接受来自我们端的连接的远程Kafka集群。我们需要打开特定的防火墙端口,以便建立连接。似乎运行拓扑是集群模式时,所有管理节点都应该能够与zookeeper通信,因此防火墙应该为每个管理员打开。