gpt4 book ai didi

java - Apache Storm : ClassNotFoundException when deploying jar to remoteCluster

转载 作者:行者123 更新时间:2023-11-30 03:13:31 24 4
gpt4 key购买 nike

我正在尝试将我的拓扑部署为一个 fat jar 捆绑到远程 Cluster 。 jar 可以成功部署,但是部署后,我在工作日志中看到以下错误:它说找不到 JpaRepository 的类,如下所示

enter image description here

我提交到集群的 jar 已经包含这个类了。我从集群中复制了 jar 并看到了它的内容,这就是我所看到的

enter image description here

如果你们中有人知道为什么会失败,我将非常感激,因为我不知道如何进一步进行此操作。我已经用 class 部署了 jar,但它仍然显示 classNotFound :(( 。一切在本地集群上运行良好。

还有一件事:- 我上传的 Jar 大小为 68MB(较重)。这和这个有什么关系吗?

最佳答案

如果您通过 Eclipse 提交,您应该执行以下操作:

public static void main(String[] args) {
TopologyBuilder b = new TopologyBuilder();
// build your topology
b.setSpout(...);
b.setBolt(...);

Config c = new Config();
c.put(Config.NIMBUS_HOST, "130.211.244.139");
// not sure you you use 6627; 6123 is default port; if you change the port, just use 6627 of course
c.put(Config.NIMBUS_THRIFT_PORT, new Integer(6123));

StormSubmitter.submitTopology("myTopolgyName", conf, b.createTopology());
}

此外,您需要指定 JVM 参数-Dstorm.jar=/Users/agarg/Documents/notificationRepo/apache-storm/build/libs/apache-storm-SN‌​APSHOT-ns.r134-boot。 jar

如果您想避免在 jar 中包含传递依赖项,您还可以手动将它们复制到 Storm 的 lib 文件夹中。当然,您需要将它们复制到所有机器上。您可能还需要重新启动集群。您可以将任意数量的 jar 复制到 lib 文件夹中——Storm 会“拾取”所有这些文件。

此外,如果构建一个fat jar,则依赖的jar 不能嵌套到far jar 中(即,提取的依赖jar 的内容必须包含到far jar 中)。例如,您依赖的jar dep.jar 包含一个文件DClass.class;因此,您的 fat jar 不得包含“dep.jar”(既不在顶级文件夹中,也不在“lib”文件夹中),而是在所有 Spout 和 Bolt 类旁边包含“DClass.class”(即,“DClass.class”必须包含在jar 中的顶级文件夹。当然,您还需要尊重包结构,即,如果“dep.jar”包含文件 dpackage.DClass2(即文件夹“中的“DClass2.class”) dpackage”)远 jar 必须包含目录“dpackage”(位于 jar 内的顶级文件夹中),其中包含“DClass2.class”。

关于java - Apache Storm : ClassNotFoundException when deploying jar to remoteCluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com