1.storm在一秒钟时间内能处理100万个100字节的消息。
2.storm最基本的使用场景是流式处理,不需要中间队列
3.是Twitter开源出的日志处理系统,淘宝也在用
4.storm组件
5.storm的topology类似于hadoop中mapreduce的job,只不过job是用dag图来标识,而且会执行完,而storm的拓扑流不会停止,直到用户杀死该进程。
6.storm的工作流程:输入流是由一个称为spout的组件管理,spout接收到的数据流,发送到bolt进行处理,bolt处理完后要么存储到一个存储器中,要么会继续发送到下一个bolt中。
7.上图分析
1.nimbus 主控节点有一个叫做nimbus的守护进程,类似hadoop的jobtracker,负责在集群中分发代码,对节点分配任务,并监控机器是否故障
2.supervisor 每一个工作节点都运行一个叫做supervisor的守护进程,负责监听nimbus分发的作业,能够启动和停止这些工作进程。
8.实例
实际使用中需要注意的点
BOLTS
是用来处理数据的,数据是从spout流过来的数据,该bolts一般设计成一个类,类里面可以添加很多用户自己定义的函数,但是一般情况下,有几个默认的函数需要修改,分别是
prepare()函数
是在bolts启动的时候自动调用的,一些初始化动作可以放到这里面
execute()函数
是bolts真正处理数据的函数,该函数在接收到数据流后会不停的调用。
declareOutputFields()函数
该函数是定义数据输出的格式的函数
cleanup()函数
是该bolts执行结束的时候会调用的函数