这里列举部分思路,不详细展开
一、安装 参考博文:
http://isuifengfei.iteye.com/blog/1998269
1、安装zookeeper
2、安装storm
二、运行
1、启动zookeeper
zkServer.sh start
2、启动storm
storm nimbus & //任务协调
storm supervisor & //工作者
storm ui & //Web管理器
三、Topology的编写 参考博文
http://blog.youkuaiyun.com/jmppok/article/details/15501947
要点:
1、使用C++实现storm的Topology,主要是通过storm的multi-lang 机制,该机制使用进程的stdin 和 stdout 进行进程间通讯,通讯内容遵循一定的规则(特定结构的json,具体见官网multi-lang协议:
http://storm.apache.org/documentation/Multilang-protocol.html
),因此进程内不可以随意向stdout printf任何内容。协议的实现可以使用filox开源的stormcpp项目(git:
https://github.com/filox/StormCpp
),其封装了multi-lang的通讯规则,用户仅需注意业务逻辑即可。
2、使用stormcpp需注意,Emit的tuple不要使用json数组,而是嵌套一个json,官方给出的结构我使用下来,发现bolt无法收到tuple(具体原因不明):
"tuple": ["field1", 2, 3]
尽量应该使用如下形式:
"tuple": [{"amount":926,"id":3,"seq":7}]
3、另外,Spout在进行Emit期间,不要sleep过长时间,应当少量多次,sleep时间过长会导致心跳信号检测超时,官方的说法是“so you should not have to do much to support heartbeats for spouts. That said, you must not let subprocesses sleep more than the worker timeout during next()
.”