在风暴群集上部署拓扑时出错

时间:2015-05-25 09:01:58

标签: java logging apache-kafka apache-storm

我正在尝试在风暴clustre上部署一个简单的字数拓扑。我使用kafka作为输入(kafka Spout)。这是我得到的错误

  

java.lang.NoClassDefFoundError:无法在kafka.utils.Logging $ class.logger(logging。)的org.apache.log4j.Logger.getLogger(Logger.java:39)中初始化类org.apache.log4j.Log4jLoggerFactory。 scala:24)at kafka.consumer.SimpleConsumer.logger $ lzycompute(SimpleConsumer.scala:30)at kafka.consumer.SimpleConsumer.logger(SimpleConsumer.scala:30)at kafka.utils.Logging $ class.info(Logging.scala :67)at kafka.consumer.SimpleConsumer.info(SimpleConsumer.scala:30)at kafka.consumer.SimpleConsumer.liftedTree1 $ 1(SimpleConsumer.scala:74)at kafka.consumer.SimpleConsumer.kafka $ consumer $ SimpleConsumer $$ sendRequest( SimpleConsumer.scala:68)at kafka.consumer.SimpleConsumer.getOffsetsBefore(SimpleConsumer.scala:127)at kafka.javaapi.consumer.SimpleConsumer.getOffsetsBefore(SimpleConsumer.scala:79)at storm.kafka.KafkaUtils.getOffset(KafkaUtils.java :77)在storm.kafka.Kafka.PartitionManager上的storm.kafka.KafkaUtils.getOffset(KafkaUtils.java:67)。(PartitionManager.java:83)at storm.kafka.ZkCoordinator.refresh (ZkCoordinator.java:98)在storm.kafka.ZkCoordinator.getMyManagedPartitions(ZkCoordinator.java:69)at storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:135)at backtype.storm.daemon.executor $ fn__4654 $ fn__4669 $ fn__4698.invoke(executor.clj:565)位于java.lang.Thread的clojure.lang.AFn.run(AFn.java:24)的backtype.storm.util $ async_loop $ fn__458.invoke(util.clj:463) .RUN(Thread.java:745)

2 个答案:

答案 0 :(得分:2)

通过在我的风暴库中添加log4j-over-slf4j-1.6.6.jar来解决这个问题。

答案 1 :(得分:1)

我正在使用

  • storm 0.9.6
  • kafka 0.9.0

使用风暴0.9.6,它使用slf4j。所以你需要从你的kafka引用中排除它并包含log4j。以下是我的pom.xml

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.9.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <!--<exclusion>-->
            <!--<groupId>log4j</groupId>-->
            <!--<artifactId>log4j</artifactId>-->
        <!--</exclusion>-->
    </exclusions>
</dependency>