Storm使用非JVM的语言
要点:
1、创建topology(官方文档说使用其他语言创建很简单,因为topology本身是一个thrift结构,参考stotm.thrift)
2、用其他语言实现spout和bolt,被叫做 multilang components" 或"shelling"
a:这里有一个指定的协议Multilang protocol
b:thrift结构允许你明确的定义multilang components作为程序和脚本
c:在Java中,你覆盖ShellBolt或ShellSpolt来创建multilang components,注意输出字段的声明发生在thrift结构,所以在Java中创建multilang components如下所示:通过指定它在Java中声明领域,用其他语言处理代码指定shellbolt的结构,multilang使用JSON消息在标准输入/输出与子进程进行通信,storm伴随ruby、python和其他语言实现协议,展示一个python的例子:
python支持emitting, anchoring, acking, and logging
d:storm shell使得对nimbus打jar包和上传更方便
打jar包,上传
调用程序nimbus使用host/port,jar文件使用id号
为Storm定义一个非JVM的语言
因为Storm topology是一个thrift结构,并且nimbus是一个thrift进程,你可创建和提交topology用任何语言,开始学习的地方是storm.thrift。当你为spout和bolt创建thrift结构时,spolt和bolt指定的代码结构是:
union ComponentObject {
1: binary serialized_java;
2: ShellComponent shell;
3: JavaObject java_object;
}
使用非jvm的语言,你可能会使用2或3.ShellCompont让你指定脚本去运行,JavaObject让你指定java的spolt和bolt,storm shell命令帮你提交topology
storm shell resources/ python topology.py arg1 arg2
storm shell 将打jar包,上传jar包给nimbus,命令如下:
python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location}
提交topology到集群上
void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology) throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。