两款高性能并行计算引擎Storm和Spark比较

Spark基于这样的理念,当数据庞大时,把计算过程传递给数据要比把数据传递给计算过程要更富效率。每一个节点存储(或缓存)它的数据集,而后任务被提交给节点。 算法

因此这是把过程传递给数据。这和Hadoop map/reduce很是类似,除了积极使用内存来避免I/O操做,以使得迭代算法(前一步计算输出是下一步计算的输入)性能更高。 缓存

Shark只是一个基于Spark的查询引擎(支持ad-hoc临时性的分析查询) 网络

而Storm的架构和Spark截然相反。Storm是一个分布式流计算引擎。每一个节点实现一个基本的计算过程,而数据项在互相链接的网络节点中流进流出。和Spark相反,这个是把数据传递给过程。 架构

两个框架都用于处理大量数据的并行计算。 框架

Storm在动态处理大量生成的“小数据块”上要更好(好比在Twitter数据流上实时计算一些汇聚功能或分析)。 分布式

Spark工做于现有的数据全集(如Hadoop数据)已经被导入Spark集群,Spark基于in-memory管理能够进行快讯扫描,并最小化迭代算法的全局I/O操做。 oop

不过Spark流模块(Streaming Module)却是和Storm相相似(都是流计算引擎),尽管并不是彻底同样。 性能

Spark流模块先汇聚批量数据而后进行数据块分发(视做不可变数据进行处理),而Storm是只要接收到数据就实时处理并分发。 spa

不肯定哪一种方式在数据吞吐量上要具优点,不过Storm计算时间延迟要小。 设计

总结下,SparkStorm设计相反,而Spark Steaming才和Storm相似,前者有数据平滑窗口(sliding window),然后者须要本身去维护这个窗口。