Storm 特征
Storm是个实时的、分布式以及具备高容错的计算系统
Storm进程常驻内存
Storm数据不经过磁盘,在内存中处理
架构
Nimbus
Supervisor
Worker
编程模型
DAG (Topology)
Spout
Bolt
数据传输
ZMQ(twitter早期产品)
ZeroMQ 开源的消息传递框架,并不是一个MessageQueue
Netty
Netty是基于NIO的网络框架,更加高效。(之所以Storm 0.9版本之后使用Netty,是因为ZMQ的license和Storm的license不兼容。)
高可靠性
异常处理
消息可靠性保障机制(ACK)
可维护性
StormUI 图形化监控接口
流式处理(异步 与 同步)
客户端提交数据进行结算,并不会等待数据计算结果
逐条处理
例:ETL(数据清洗)extracted transform load
统计分析
例:计算PV、UV、访问热点 以及 某些数据的聚合、加和、平均等
客户端提交数据之后,计算完成结果存储到Redis、HBase、MySQL或者其他MQ当中,
客户端并不关心最终结果是多少。
流式处理(异步 与 同步)
客户端提交数据进行结算,并不会等待数据计算结果
逐条处理
例:ETL(数据清洗)extracted transform load
统计分析
例:计算PV、UV、访问热点 以及 某些数据的聚合、加和、平均等
客户端提交数据之后,计算完成结果存储到Redis、HBase、MySQL或者其他MQ当中,
客户端并不关心最终结果是多少。
实时请求应答服务(同步)
客户端提交数据请求之后,立刻取得计算结果并返回给客户端
Drpc
实时请求处理
例:图片特征提取
Storm:进程、线程常驻内存运行,数据不进入磁盘,数据通过网络传递。
MapReduce:为TB、PB级别数据设计的批处理计算框架。
Storm:纯流式处理
专门为流式处理设计
数据传输模式更为简单,很多地方也更为高效
并不是不能做批处理,它也可以来做微批处理,来提高吞吐
Spark Streaming:微批处理
将RDD做的很小来用小的批处理来接近流式处理
基于内存和DAG可以把处理任务做的很快