Kafka Spout的消费者和另一个在Spring内部运行的消费者无法同时运行

时间:2014-07-28 11:27:39

标签: bigdata apache-kafka apache-storm

我的应用程序接受一个网址,其中包含通过使用spring公开的休息服务处理所需的数据。

每次收到要接受数据的网址时,应用程序

  • 根据主题" DataReady"
  • 将网址发送给DataReady消费者
  • DataReady使用者从网址下载数据并使用kafka生产者将其发送到主题" DataProcess"
  • 的风暴拓扑

风暴拓扑内的Kafka Spout接受处理后的数据。这只是一个测试系统,因此所有代码都在localhost中运行,只有一个分区,一个代理和一个复制因子为1。

问题是我不能让KafkaSpout和DataReady使用者同时连接到zookeeper。在Tomcat中运行的KafkaSpout和DataReady Consumer都可以在独立运行时连接到Zookeeper。

我正在使用 apache-storm-0.9.1-incubating kafka_2.9.2-0.8.1.1

我的storm.yaml文件具有以下配置

storm.zookeeper.servers:
 - "localhost"

nimbus.host: "localhost"

在Tomcat之后运行风暴时抛出的异常

  java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException:     org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
        at storm.kafka.ZkCoordinator.refresh(ZkCoordinator.java:83) ~[stormjar.jar:na]
        at storm.kafka.ZkCoordinator.getMyManagedPartitions(ZkCoordinator.java:45) ~[stormjar.jar:na]
        at storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:118) ~[stormjar.jar:na]
        at backtype.storm.daemon.executor$eval3848$fn__3849$fn__3864$fn__3893.invoke(executor.clj:562) ~[na:na]
        at backtype.storm.util$async_loop$fn__384.invoke(util.clj:433) ~[na:na]
        at clojure.lang.AFn.run(AFn.java:24) [clojure-1.4.0.jar:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
        at storm.kafka.DynamicBrokersReader.getBrokerInfo(DynamicBrokersReader.java:62) ~[stormjar.jar:na]
        at storm.kafka.ZkCoordinator.refresh(ZkCoordinator.java:54) ~[stormjar.jar:na]
        ... 6 common frames omitted

当我先运行storm和Tomcat后,我得到一个NoNode异常。谁能帮助我理解为什么我会这样做?

0 个答案:

没有答案