使用Storm 0.10.x(KafkaSpout)

时间:2017-05-25 08:53:24

标签: apache-kafka apache-storm

我不确定这个论坛是否是一个正确的问题。我们使用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合作过,所以不确定我们到底错过了什么。

非常感谢一些帮助和建议

1 个答案:

答案 0 :(得分:1)

Storm 0.10x与Kafka 0.10x兼容。我们仍然可以使用依赖于基于zookeeper的偏移存储机制的旧KafkaSpout

连接丢失异常即将到来,因为我们试图访问一个不允许/接受来自我们端的连接的远程Kafka集群。我们需要打开特定的防火墙端口,以便建立连接。似乎运行拓扑是集群模式时,所有管理节点都应该能够与zookeeper通信,因此防火墙应该为每个管理员打开。