天天看点

Apache Storm 官方文档 —— 定义 Storm 的非 JVM 语言 DSL

当你创建 thrift 结构的 spouts 与 bolts 时,spout 或者 bolt 的代码是以 componentobject 结构体的形式定义的:

对于非 jvm 语言 dsl(这里以 python dsl 为例),你需要使用其中的 “2” 与 “3”。shellcomponent 负责指定运行该组件(例如你的 python 代码)的脚本,而 javaobject 则负责指定该组件的本地(native)java spouts 与 bolts(而且 storm 也会使用反射来创建 spout 或者 bolt)。

“storm shell” 命令可以用于提交拓扑。下面是一个示例:

storm shell 随后会将 <code>resources/</code> 打包到一个 jar 文件中,将该文件上传到 nimbus,然后像这样调用你的 topology.py 脚本:

接着你就可以使用 thrift api 连接到 nimbus 来提交拓扑,并将上传的 jar 文件地址作为参数传入 submittopology 方法中。作为参考,下面给出了 submittopology 的定义:

最后,对于非 jvm dsl 还有一件非常重要的事就是要确保可以在一个文件中方便地定义出完整的拓扑(bolts,spouts,以及拓扑的其他部分定义)。