Kafka Storm - 满足依赖性

我正在尝试将我的第一个拓扑部署到风暴群集,作为我公司评估的一部分 . 拓扑只是从 kafka 获取值并将它们放入 cassandraredis .

复制大量的.jar文件以尝试满足各种依赖项后,我遇到了一个问题,其中 storm 声称缺少依赖项,但日志中的启动类列表显示该类可用 .

这是例外:

java.lang.NoClassDefFoundError:scaf / collection / GenTraversableOnce $ class at kafka.utils.Pool . (Pool.scala:28)〜[kafka_2.10-0.8.1.1.jar:na] at kafka.consumer.FetchRequestAndResponseStatsRegistry $ . 〜[kafka_2.10-0.8.1.1.jar:na] at kafka.consumer.FetchRequestAndResponseStatsRegistry $ . (FetchRequestAndResponseStats.scala)〜[kafka_2.10-0.8.1.1.jar:na] at kafka.consumer.SimpleConsumer . (SimpleConsumer .scala:39)〜[kafka_2.10-0.8.1.1.jar:na] at kafka.javaapi.consumer.SimpleConsumer . (SimpleConsumer.scala:34)〜[kafka_2.10-0.8.1.1.jar:na] at storm.kafka.DynamicPartitionConnections.register(DynamicPartitionConnections.java:60)〜[storm-kafka-0.9.4.jar:0.9.4]在storm.kafka.PartitionManager . (PartitionManager.java:64)〜[storm-kafka- 0.9.4.jar:0.9.4]在storm.kafka.ZkCoordinator.refresh(ZkCoordinator.java:98)〜[storm-kafka-0.9.4.jar:0.9.4]在storm.kafka.ZkCoordinator.getMyManagedPartitions( ZkCoordinator.java:69)〜[storm-kafka-0.9.4.jar:0.9.4]在storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:135)〜[storm-kafka-0.9.4.jar:0.9 .4] attypetype.storm.daemon.executor $ fn__4654 $ fn__4669 $ fn__4698.invoke(executor.clj:565)〜[storm-core-0.9.4.jar:0.9.4] at backtype.storm.util $ async_loop $ fn__458.invoke(UTIL . clj:463)〜[storm-core-0.9.4.jar:0.9.4] at clojure.lang.AFn.run(AFn.java:24)[clojure-1.5.1.jar:na] at java.lang .Thread.run(Thread.java:745)[na:1.8.0_45]引起:java.lang.ClassNotFoundException:java.net.URLClassLoader.findClass(URLClassLoader.java:381)中的scala.collection.GenTraversableOnce $ class~ [na:1.8.0_45] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)〜[na:1.8.0_45] at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)〜[na :1.8.0_45]在java.lang.ClassLoader.loadClass(ClassLoader.java:357)〜[na:1.8.0_45]

当我查看主管线程的启动信息时,我看到了:

2015-06-07T07:55:19.941-0700 oazZooKeeper [INFO]客户端环境:java.class.path = ... /usr/local/src/apache-storm-0.9.4/lib/scala-library- 2.11.6.jar:..

当我打开这个文件时,我看到这个条目:

-rwxrwxrwx 0 0 0 0 2014年3月18日scala / collection / GenTraversableOnce.class

所以别的东西是不对的 . 我错过了哪些步骤?

注意:来自org / jboss / netty / channel / ChannelFactory的类似问题..

回答(2)

2 years ago

Kafka版本指定了它构建的Scala版本 .

Scala 2.10 - kafka_2.10-0.9.0.1.tgz(asc,md5)Scala 2.11 - kafka_2.11-0.9.0.1.tgz(asc,md5)

我犯了使用Scala 2.10和kafka 2.11的错误 . 我能够通过纠正我的maven依赖性到正确的scala和kafka组合来解决这个问题 .

2 years ago

发行说明源码下载:kafka-0.11.0.1-src.tgz(asc,md5)

Binary downloads: Scala 2.11  - kafka_2.11-0.11.0.1.tgz (asc, md5)
Scala 2.12  - kafka_2.12-0.11.0.1.tgz (asc, md5) We build for multiple

这仅在您使用Scala并且您需要为您使用的相同Scala版本构建的版本时才有意义 . 否则任何版本都应该工作(建议使用2.11) .