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在保证高可靠性的前提下还可以让处理进行的更加实时;也就是说,所有的信息都会被处理。
Storm同样还具备容错和分布计算这些特性,这就让Storm可以扩展到不同的机器上进行大批量的数据处理。
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的架构,每天可处理几十亿的用户日志信息,
从用户行为发生到完成分析延迟在秒级。
本文出自 “沉默的人” 博客,请务必保留此出处http://bjfmo.blog.51cto.com/280593/1559493
原文地址:http://bjfmo.blog.51cto.com/280593/1559493