一、Storm简介linux
storm是一个分布式、容错的实时计算系统,起先被托管在GitHub上,遵循Eclipse Public License 1.0 。Storm是由BackType开发的实时处理系统,由Twitter开源redis
2013年,Storm进入Apache社区进行孵化;sql
2014年9月,晋级为Apache顶级项目apache
官网 http://storm.apache.org/编程
hadoop和storm的区别:hadoop反复启动中止,数据反复落地耗费时间,storm采用流式处理,数据不落地网络
数据来源:hadoop的数据是hdfs上的TB级别数据,storm是实时新增的数据;架构
处理过程:hadoop是分为split 、map、shuffler 、reduce等阶段、storm是由用户定义流程,流程中能够包含多个步骤,每一个步骤能够是数据源(spout)或处理逻辑(bolt)框架
是否结束:hadoop最后是要结束的;storm是没有结束的,数据处理完是要等待新数据的进入的。异步
处理速度:hadoop处理堆积的数据,速度慢,storm只是处理新增的数据,时效性较高;分布式
二、Storm架构:
Nimbus:管事,可是能够不存在,若是Nimbus挂掉,以前提价的job能够继续进行处理,后续不能继续提交,所以Nimbus的主要做用是提交任务和经过zk与Supervisor进行沟通;至关于Leader
Supervisor:
Worker
编程模型
DAG:有向无环图
Spout:源头
Bolt:bolt处理完数据会使用消息框架将信息返回给上一个Bolt或Spout;
数据传输:storm底层传输数据使用zmq或者netty
zmq
zmq是开源的消息传递框架;(0.9版本以上已经不用了)
Netty
netty是NIO的网络框架,效率比较高。之因此有netty事storm在apache以后,zmq遵循linux的协议,netty遵循的协议比较宽松。
高可用:
异常处理,就是异常崩溃,也不影响,例如supervisor挂了,nimbus会从新调度
消息可靠性机制保证,ack机制
可维护:
storm UI
三、Storm处理数据的两种模式:
实时请求应答模式(同步)
Client ----》DRPC Server ----》Spout---》Bolt-----》Return---》(返回给前面的drpc server 而后再返回给Client)
对应DRPC Server 有不一样的Spout --》DRPC Spout ,Topology(拓扑结构)、ReturnResult
流式处理(异步)
Client---》MQ--->Sport------>Bolt1----->bolt2--------->Storage(redis、hbase、Mysql、mq等)
<----
Storm的wordCount
一、随机生成数据
二、切割单词
三、hash不一样单词到不一样的任务上去