2013-10-01 3 views
2

Моего шторма приложение работает один топологию работает нормально при работе в локальном режиме, но при работе в распределенной среде я получаю эти исключения в моих журналах рабочих. Это одно и то же исключение, но оно относится к двум различным классам. Первый относится к storm.trident.topology.MasterBatchCoordinator:InvalidClassException локального класс несовместимые при запуске штурмовать топологию

java.lang.RuntimeException: java.io.InvalidClassException: storm.trident.topology.MasterBatchCoordinator; local class incompatible: stream classdesc serialVersionUID = -5647458900661444882, local class serialVersionUID = 7308128536282303612 
    at backtype.storm.utils.Utils.deserialize(Utils.java:68) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.utils.Utils.getSetComponentObject(Utils.java:200) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$get_task_object.invoke(task.clj:58) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task_data$fn__3164.invoke(task.clj:165) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.util$assoc_apply_self.invoke(util.clj:752) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task_data.invoke(task.clj:158) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task.invoke(task.clj:169) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.executor$mk_executor$fn__3352.invoke(executor.clj:303) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.core$map$fn__4087.invoke(core.clj:2432) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.sval(LazySeq.java:42) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.seq(LazySeq.java:60) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.RT.seq(RT.java:473) ~[clojure-1.4.0.jar:na] 
    at clojure.core$seq.invoke(core.clj:133) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$fn__5875.invoke(protocols.clj:54) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$fn__5828$G__5823__5841.invoke(protocols.clj:13) ~[clojure-1.4.0.jar:na] 
    at clojure.core$reduce.invoke(core.clj:6030) ~[clojure-1.4.0.jar:na] 
    at clojure.core$into.invoke(core.clj:6077) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.executor$mk_executor.invoke(executor.clj:303) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$exec_fn__1224__auto____5863$iter__5868__5872$fn__5873.invoke(worker.clj:360) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.LazySeq.sval(LazySeq.java:42) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.seq(LazySeq.java:60) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.Cons.next(Cons.java:39) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.RT.next(RT.java:587) ~[clojure-1.4.0.jar:na] 
    at clojure.core$next.invoke(core.clj:64) ~[clojure-1.4.0.jar:na] 
    at clojure.core$dorun.invoke(core.clj:2726) ~[clojure-1.4.0.jar:na] 
    at clojure.core$doall.invoke(core.clj:2741) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$exec_fn__1224__auto____5863.invoke(worker.clj:360) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.AFn.applyToHelper(AFn.java:185) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.AFn.applyTo(AFn.java:151) ~[clojure-1.4.0.jar:na] 
    at clojure.core$apply.invoke(core.clj:601) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$mk_worker__5918.doInvoke(worker.clj:329) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.RestFn.invoke(RestFn.java:512) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$_main.invoke(worker.clj:439) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.AFn.applyToHelper(AFn.java:172) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.AFn.applyTo(AFn.java:151) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker.main(Unknown Source) ~[storm-core-0.9.0-wip21.jar:na] 
Caused by: java.io.InvalidClassException: storm.trident.topology.MasterBatchCoordinator; local class incompatible: stream classdesc serialVersionUID = -5647458900661444882, local class serialVersionUID = 7308128536282303612 
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_25] 
    at backtype.storm.utils.Utils.deserialize(Utils.java:64) ~[storm-core-0.9.0-wip21.jar:na] 
    ... 36 common frames omitted 

второе относится к backtype.storm.topology.BasicBoltExecutor:

java.lang.RuntimeException: java.io.InvalidClassException: backtype.storm.topology.BasicBoltExecutor; local class incompatible: stream classdesc serialVersionUID = -2269346678248157705, local class serialVersionUID = 1040841720700290343 
    at backtype.storm.utils.Utils.deserialize(Utils.java:68) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.utils.Utils.getSetComponentObject(Utils.java:200) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$get_task_object.invoke(task.clj:58) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task_data$fn__3164.invoke(task.clj:165) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.util$assoc_apply_self.invoke(util.clj:752) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task_data.invoke(task.clj:158) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.task$mk_task.invoke(task.clj:169) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.executor$mk_executor$fn__3352.invoke(executor.clj:303) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.core$map$fn__4087.invoke(core.clj:2432) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.sval(LazySeq.java:42) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.seq(LazySeq.java:60) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.RT.seq(RT.java:473) ~[clojure-1.4.0.jar:na] 
    at clojure.core$seq.invoke(core.clj:133) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$fn__5875.invoke(protocols.clj:54) ~[clojure-1.4.0.jar:na] 
    at clojure.core.protocols$fn__5828$G__5823__5841.invoke(protocols.clj:13) ~[clojure-1.4.0.jar:na] 
    at clojure.core$reduce.invoke(core.clj:6030) ~[clojure-1.4.0.jar:na] 
    at clojure.core$into.invoke(core.clj:6077) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.executor$mk_executor.invoke(executor.clj:303) ~[storm-core-0.9.0-wip21.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$exec_fn__1224__auto____5863$iter__5868__5872$fn__5873.invoke(worker.clj:360) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.LazySeq.sval(LazySeq.java:42) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.LazySeq.seq(LazySeq.java:60) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.RT.seq(RT.java:473) ~[clojure-1.4.0.jar:na] 
    at clojure.core$seq.invoke(core.clj:133) ~[clojure-1.4.0.jar:na] 
    at clojure.core$dorun.invoke(core.clj:2725) ~[clojure-1.4.0.jar:na] 
    at clojure.core$doall.invoke(core.clj:2741) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$exec_fn__1224__auto____5863.invoke(worker.clj:360) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.AFn.applyToHelper(AFn.java:185) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.AFn.applyTo(AFn.java:151) ~[clojure-1.4.0.jar:na] 
    at clojure.core$apply.invoke(core.clj:601) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$fn__5862$mk_worker__5918.doInvoke(worker.clj:329) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.RestFn.invoke(RestFn.java:512) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker$_main.invoke(worker.clj:439) ~[storm-core-0.9.0-wip21.jar:na] 
    at clojure.lang.AFn.applyToHelper(AFn.java:172) ~[clojure-1.4.0.jar:na] 
    at clojure.lang.AFn.applyTo(AFn.java:151) ~[clojure-1.4.0.jar:na] 
    at backtype.storm.daemon.worker.main(Unknown Source) ~[storm-core-0.9.0-wip21.jar:na] 
Caused by: java.io.InvalidClassException: backtype.storm.topology.BasicBoltExecutor; local class incompatible: stream classdesc serialVersionUID = -2269346678248157705, local class serialVersionUID = 1040841720700290343 
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) ~[na:1.7.0_25] 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_25] 
    at backtype.storm.utils.Utils.deserialize(Utils.java:64) ~[storm-core-0.9.0-wip21.jar:na] 
    ... 35 common frames omitted 
2013-09-19 07:42:19 b.s.util [INFO] Halting process: ("Error on initialization") 

Он продолжает появляться во всем журнале и моей топологии очевидно, не работает. Я знаю, что это исключение, когда серийная версия класса оказывается отличается от дескриптора класса, но на самом деле не знаю, что вызывает его, и как это исправить.

Вот мои POM зависимости:

<properties> 
    <org.springframework-version>3.2.3.RELEASE</org.springframework-version> 
    <storm-version>0.9.0-wip17</storm-version> 
    <storm-kafka-version>0.9.0-wip16a-scala292</storm-kafka-version> 
    <kafka-version>0.7.1-SNAPSHOT</kafka-version> 
    <cassandra.unit.version>1.0.3.1</cassandra.unit.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 


<repositories> 
    <repository> 
     <id>github-releases</id> 
     <url>http://oss.sonatype.org/content/repositories/github-releases/</url> 
    </repository> 
    <repository> 
     <id>clojars.org</id> 
     <url>http://clojars.org/repo</url> 
    </repository> 
    <repository> 
     <id>twitter4j</id> 
     <url>http://twitter4j.org/maven2</url> 
    </repository> 
</repositories> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>storm</groupId> 
     <artifactId>storm</artifactId> 
     <version>${storm-version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>storm</groupId> 
     <artifactId>storm-kafka</artifactId> 
     <version>${storm-kafka-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.clojars.smallrivers</groupId> 
     <artifactId>kafka</artifactId> 
     <version>${kafka-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.twitter4j</groupId> 
     <artifactId>twitter4j-core</artifactId> 
     <version>2.2.6-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.twitter4j</groupId> 
     <artifactId>twitter4j-stream</artifactId> 
     <version>2.2.6-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>13.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>me.prettyprint</groupId> 
     <artifactId>hector-core</artifactId> 
     <version>1.0-4</version> 
    </dependency> 
    <!-- Tests --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
    </dependency> 
    <dependency> 
     <groupId>org.yaml</groupId> 
     <artifactId>snakeyaml</artifactId> 
     <version>1.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.cassandraunit</groupId> 
     <artifactId>cassandra-unit</artifactId> 
     <version>${cassandra.unit.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>1.9.5</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

Любые идеи? Я потерял здесь: \

ответ

1

Возможно ли вы смешиваете разные версии Грозовые? Журнал ошибок относится к версии Storm 0.9.0-wip21, но версия Storm 0.9.0-wip17 указана среди зависимостей проекта в файле pom.xml. Все компоненты кластера должны использовать ту же версию Storm.

+0

Это определенно может быть проблемой. Проверка, скоро будет обновлена. – forhas

+0

Хорошая точка зрения, но я думаю, что это не проблема, так как штормовая баня действительно предоставляется и не упакована в моем приложении jar (для этого я использую профили maven). Обновленный pom в вопросе, чтобы избежать путаницы. – forhas

+0

Определенно выглядит несоответствие версии. Все ли узлы вашего кластера Storm запускают ту же версию Storm? – schiavuzzi