twitter storm的多语言组件(1)

本文介绍如何在TwitterStorm中使用非JVM语言(如C++和Python)编写实时计算任务。通过遵循多语言协议,实现特定的消息收发及解析方法,可以成功部署跨语言的Storm拓扑。
Twitter Storm([url]https://github.com/nathanmarz/storm[/url])是一个分布式实时计算系统,作者使用clojure和java来编写系统;因此storm默认支持使用clojure和java来编写计算任务。但在系统设计和实现上,作者考虑到了各种跨语言的场景,因此也提供了使用其他非JVM语言编写storm任务的机制。
使用其他语言,如c++,python来编写storm计算任务的主要方法可以参见Storm wiki上的说明([url]https://github.com/nathanmarz/storm/wiki/Using-non-JVM-languages-with-Storm[/url])。这篇wiki说的有点饶,据我理解其基本流程如下:
[list]
[*] 使用A语言实现多语言协议 [url]https://github.com/nathanmarz/storm/wiki/Multilang-protocol[/url]; 其实是实现一些消息收发和解析的方法,可以参考官方已经实现的python版本和ruby版本;
[*] 使用A语言编写spout和bolt,实现计算逻辑;(如一些特定的语言可能得预先在服务器上装环境,或者能将运行时所需的lib都打包到可执行文件中)
[*] 使用A语言实现topology (参考storm.thrift中的topology设定); spout和bolt可以和topology写到一个文件里
[*] 使用storm shell(这个命令在shell command wiki里都没详细介绍)将资源文件和代码文件打包并提交,如对于python语言,
storm shell resources/ python topology.py arg1 arg2
这条命令首先将 resources/下的文件打成jar包传到nimubs服务器上,然后再调用:
python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location} 命令启动topology。
因此你需要在topology实现topo的组装和提交,即组装一个StormTopology,并且使用这个thrift函数来提交topology到nimbus:
void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology)
throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值