如何将 jvm args 传递给 Storm 应用程序

问题描述

我正在开发一个 Storm 应用程序,需要使用 vmargs 传递环境和云信息。 程序 args 引发了安全问题,因为我使用 System.setproperty 和我无法使用的属性文件设置这些值。 Vmargs 不适用于风暴。 知道我还能做什么吗?

解决方法

我假设您在远程机器上以集群模式运行 Storm。 在这种情况下,storm 建议您使用 storm jar 命令。确实,默认情况下它只接受几个参数,因为它在内部使用调用 java 的 python 脚本。

但似乎也可以使用 java 命令启动 Storm 并将命令行命令传递给它 - 请参阅此 link

,

将一些变量传递给拓扑的另一种方法是在通量文件中替换环境变量并运行

name: topo${ENV-YOURVAR}

在 bash 中运行时看起来像:

export YOURVAR=test
storm jar yourtopo.jar org.apache.storm.flux.Flux yourtopo.flux -e

Flag -e 告诉storm 替换flux 文件中的环境变量