gpt4 book ai didi

java - 如何在运行时/不重新启动时将 jar 文件添加到 Apache Storm EXTLIB?

转载 作者:行者123 更新时间:2023-12-02 10:21:09 24 4
gpt4 key购买 nike

我想在 Apache Storm 运行时将新的逻辑添加到新的 jar 文件中。向其提供新 jar 的方法是将它们复制到其 extlib 中。问题是,当 Storm 运行时,该库中的 jar 会被它锁定,并且不会加载新的 jar。看起来它在加载时读取 jar 类,并且无法在运行时重新读取它们。谁能给我一些关于如何在运行时向 Storm 添加新 jar 的提示?

最佳答案

人们通常这样做的方式是将依赖项与您的拓扑 jar 捆绑在一起,例如使用 maven-shade-plugin。这样,您就可以在将新依赖项版本投入生产之前运行任何单元或集成测试。如果您要更新代码,我更愿意这样做。

如果您正在更新资源包,或者您不想执行我上面描述的操作,我相信您可以使用 blobstore 功能来替换 jar(尽管尚未测试)。 Storm 允许您将 blob 上传到集群,然后可以将其作为依赖项添加到拓扑中。如果您将依赖项作为 blob 上传到集群,则可以告诉 Storm 在 blob 更新时重新启动工作线程。

您可以使用 storm blobstore create --file your-plugin.jar --acl o::rwa --replication-factor 1 plugin1 将依赖项上传到 blobstore。

然后,您可以通过执行类似 storm jar your-topology.jar com.yourcompany.Topology -c topology.blobstore.map='{"plugin1":{"localname":"plugin1- 之类的操作来提交拓扑blob", "解压缩":false, "workerRestart":true}}'

当您想要更新your-plugin.jar时,您可以执行storm blobstore update --file your-updated-plugin.jar plugin1。这应该会导致 Storm 上传新版本的 jar,然后重新启动所有拓扑工作线程。

有关 Blob 存储的更多文档,请访问 https://storm.apache.org/releases/2.0.0-SNAPSHOT/distcache-blobstore.html ,以及有关 topology.blobstore.map 设置的文档,位于 https://github.com/apache/storm/blob/v2.0.0/storm-client/src/jvm/org/apache/storm/Config.java#L110

关于java - 如何在运行时/不重新启动时将 jar 文件添加到 Apache Storm EXTLIB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330982/

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