1. Storm是什么:编程
Storm简单来讲,就是分布式实时计算系统。服务器
按照storm做者的说法,storm对于实时计算的意义相似于hadoop 对于批处理的意义 。网络
2. Storm的主要特色:
架构
1.简单的编程模型。相似于Map Reduce下降了并行批处理复杂性,Storm下降了进行实时处理的复杂性。
2.可使用各类编程语言。你能够在Storm之上使用各类编程语言。默认支持C lojure、Java、Ruby和Python。框架
要增长对其余语言的支持,只需实现一个简单的Storm通讯协议便可。
3.容错性。Storm会管理工做进程和节点的故障。
4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5.可靠的消息处理。Storm保证每一个消息至少能获得一次完整处理。任务失败时,它会负责从消息源重试消息。
6.快速。系统的设计保证了消息能获得快速的处理。
7.本地模式。Storm有一个“本地模式”,能够在处理过程当中彻底模拟Storm集群。这让你能够快速进行开发和单元测试。编程语言
2. Storm与Spark、Hadoop的比较:
对比Hadoop的批处理,Storm是个实时的、分布式以及具有高容错的计算系统。同Hadoop同样Storm也能够处理大批量的数据,分布式
然而Storm在保证高可靠性的前提下还可让处理进行的更加实时;也就是说,全部的信息都会被处理。ide
Storm一样还具有容错和分布计算这些特性,这就让Storm能够扩展到不一样的机器上进行大批量的数据处理。
oop
storm的网络直传、内存计算,其时延必然比 hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,性能
省去了批处理的收集数据的时间;由于storm是服务型的做业,也省去了做业调度的时延。因此从时延上来看,
storm要快于hadoop。
比较:hadoop是磁盘级计算,进行计算时,数据在磁盘上,须要读写磁盘;
Storm是内存级计算,数据直接经过网络导入内存。读写内存比读写磁盘速度快n个数量级。
使用领域不一样,一个是批量处理,基于任务调度的;另一个是实时处理,基于流。
从原理角度来说:
1. hadoop M/R基于HDFS,须要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
2. Storm 基于Zero M Q这个高性能的消息通信库,不持久化数据。
storm的适用场景:
1. 流数据处理。Storm能够用来处理源源不断流进来的消息,处理以后将结果写入到某个存储中去。
2. 布式rpc。因为storm的处理组件是分布式的,并且处理延迟极低,因此能够做为一个通用的分布式框架来使用。
固然,其实咱们的搜索引擎自己也是一个分布式rpc系统。
应用:storm被普遍用来进行实时日志处理,出如今实时统计、实时风控、实时推荐等场景中。
在淘宝个性化搜索实时分析项目中,使用timetunnel + hbase + storm + ups的架构,天天可处理几十亿的用户日志信息,
从用户行为发生到完成分析延迟在秒级。