Storm:Kafka到HDFS - 依赖jar问题

时间:2016-09-17 03:49:19

标签: hadoop hdfs apache-kafka apache-storm kafka-consumer-api

我构建了一个风暴拓扑,它消耗来自kafka的数据并写入hdfs。

使用风暴& kafka依赖,如下,

<storm.version>0.10.0.2.3.4.0-3485</storm.version>
<kafka.version>0.8.2.1</kafka.version>

拓扑失败,但声明如下:

java.lang.NoSuchMethodError: kafka.javaapi.consumer.SimpleConsumer.<init>(Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;)V 
at storm.kafka.DynamicPartitionConnections.register(DynamicPartitionConnections.java:60) 
at storm.kafka.PartitionManager.<init>(PartitionManager.java:66) 
at storm.kafka.ZkCoordinator.refresh(ZkCoordinator.java:98) 
at storm.kafka.ZkCoordinator.getMyManagedPartitions(ZkCoordinator.java:69) at storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:138) 
at backtype.storm.daemon.executor$fn__7098$fn__7113$fn__7142.invoke(executor.clj:596) 
at backtype.storm.util$async_loop$fn__543.invoke(util.clj:475) 
at clojure.lang.AFn.run(AFn.java:22) 
at java.lang.Thread.run(Thread.java:745)

但是,当使用风暴&amp; kafka依赖,如下,

<storm.version>0.9.3.2.2.4.0-2633</storm.version>
<kafka.version>0.8.2.1</kafka.version>

拓扑运行良好并下载消息并写入hdfs,没有任何问题!!

有人可以帮助解决造成问题的原因并帮助我解决问题!

2 个答案:

答案 0 :(得分:1)

  

HDP 2.3.4 支持 Kafka-0.9 开箱即用。

并且不建议使用与HDP堆栈不同的版本,因为该行为尚未经过测试,因此不受支持。

参考文献: https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.4/bk_HDP_RelNotes/content/ch_relnotes_v234.html

答案 1 :(得分:0)

尝试更改storm-kafka依赖关系:

<groupId>org.apache.storm</groupId>
<artifactId>storm-kafka</artifactId>
<version>${storm.version}</version>
<scope>compile</scope>

到此:

<groupId>org.apache.storm</groupId>
<artifactId>storm-kafka</artifactId>
<version>0.9.3.2.2.4.0-2633</version>
<scope>compile</scope>

保持Storm和Kafka版本:

<storm.version>0.10.0.2.3.4.0-3485</storm.version>
<kafka.version>0.8.2.1</kafka.version>