比较内存中的集群计算系统

voi*_*oid 10 memcachedb redis apache-spark apache-storm

我正在研究Spark(伯克利)集群计算系统.在我的研究中,我了解了其他一些内存系统,如Redis,Memcachedb等.如果有人能给我SPARK和REDIS(以及MEMCACHEDB)之间的比较,那将会很棒.在什么情况下Spark比其他内存系统有优势?

Did*_*zia 30

他们是完全不同的野兽.

Redis和memcachedb是分布式商店.Redis是一个纯内存系统,具有可选的持久性,具有各种数据结构.Memcachedb在Berkeley-DB之上提供了一个memcached API.在这两种情况下,它们更有可能被OLTP应用程序使用,或最终用于简单的实时分析(数据的即时聚合).

Redis和memcachedb都缺乏有效地并行处理存储数据的机制.您无法轻松扫描并对存储的数据应用某些处理.它们不是为此而设计的.此外,除了使用客户端手动分片之外,它们无法在群集中扩展(虽然Redis群集实现正在进行中).

Spark是一个通过提供内存分布式数据集来加速大规模分析工作(尤其是迭代工作)的系统.使用Spark,您可以在一组计算机上实现高效的迭代映射/减少作业.

Redis和Spark都依赖于内存数据管理.但Redis(和memcached)与其他OLTP NoSQL存储在同一个球场,而Spark与Hadoop map/reduce系统非常相似.

Redis擅长以高达1毫秒的延迟运行大量快速存储/检索操作.Spark在大量数据上实现大规模迭代算法,用于机器学习,图形分析,交互式数据挖掘等.

更新:关于Storm的其他问题

问题是将Spark与Storm进行比较(见下面的评论).

Spark仍然基于这样的想法:当现有数据量巨大时,将流程移动到数据更便宜,而不是将数据移动到流程.每个节点存储(或缓存)其数据集,并将作业提交给节点.因此,流程将移至数据.它与Hadoop map/reduce非常相似,只是内存存储被积极地用于避免I/O,这使得它对迭代算法有效(当前一步的输出是下一步的输入时).Shark只是一个构建在Spark之上的查询引擎(支持临时分析查询).

你可以看到Storm是Spark的完整架构.Storm是一种分布式流媒体引擎.每个节点实现一个基本过程,数据项流入/流出互连节点的网络(与Spark相反).有了Storm,数据就会转移到这个过程中.

这两个框架都用于并行化大量数据的计算.

但是,Storm擅长动态处理大量生成/收集的小数据项(例如在Twitter流上实时计算某些聚合函数或分析).

Spark适用于已导入Spark群集的现有数据(如Hadoop),通过内存管理提供快速扫描功能,并最大限度地减少迭代算法的全局I/O数量.

  • 风暴怎么样?你如何将它与Spark(或Shark)进行比较? (2认同)
  • 这是我的2美分:Spark流媒体有滑动窗口的概念,而在Storm中你必须自己维护窗口 (2认同)