风暴 - KafkaSpout在open()

时间:2016-09-16 19:52:25

标签: apache-kafka apache-storm

过去两天,我一直想在拓扑中实现KafkaSpout。这里 是一些重要的信息。

所有三项服务都在同一个实例上运行。 Kafka的经纪人默认使用9092 端口,advertised.listeners设置为PLAINTEXT://localhost:9092。 Zookeeper,使用默认值 客户端端口2181.而Storm Nimbus主机名也已设置为localhost。

自定义Kafka Producer成功创建日志消息,而使用zkCli Zookeeper脚本我看过使用/ brokers路径时,分区和其他相关的 信息存储正确。

但是,我在激活时不断收到错误,然后监视拓扑。 以下是我实现的Storm拓扑的源代码:

BrokerHosts hosts = new ZkHosts("127.0.0.1:2181");

SpoutConfig spoutConfig = new SpoutConfig(hosts, "bytes", "/kafkastorm/", "bytes" + UUID.randomUUID().toString());
spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
spoutConfig.zkServers = Arrays.asList("127.0.0.1");
spoutConfig.zkPort = 2181;

KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig);

TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("bytes", kafkaSpout);
builder.setBolt("byteSize", new KafkaByteProcessingBolt()).shuffleGrouping("bytes");

StormTopology topology = builder.createTopology();

Config config = new Config();

StormSubmitter.submitTopology("topology", config, topology);

但是,执行bin/storm monitor <topology_name> -m bytes时我遇到的错误消息如下:

Exception in thread "main" java.lang.IllegalArgumentException: stream: default not found
at org.apache.storm.utils.Monitor.metrics(Monitor.java:223)
at org.apache.storm.utils.Monitor.metrics(Monitor.java:159)
at org.apache.storm.command.monitor$_main.doInvoke(monitor.clj:36)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at org.apache.storm.command.monitor.main(Unknown Source)

通过检查worker的日志(worker.log文件),我得出结论 KafkaSpout在open()方法上失败。

java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
at org.apache.storm.kafka.KafkaSpout.open(KafkaSpout.java:75) ~[storm-kafka-1.0.2.jar:1.0.2]
at org.apache.storm.daemon.executor$fn__7990$fn__8005.invoke(executor.clj:604) ~[storm-core-1.0.2.jar:1.0.2]
at org.apache.storm.util$async_loop$fn__624.invoke(util.clj:482) [storm-core-1.0.2.jar:1.0.2]
at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
Caused by: java.lang.ClassNotFoundException: org.apache.curator.RetryPolicy
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_101]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_101]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[?:1.8.0_101]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_101]
... 5 more

有人可以解释一下KafkaSpout失败的原因可能是什么 open()方法?

我真的很感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

从错误“java.lang.NoClassDefFoundError:org / apache / curator / RetryPolicy”看来curator-client.jar缺失。

请检查以下链接是否有帮助?

https://github.com/abhinavg6/Kafka-Storm-Conscomp/issues/1