Storm和Hadoop之间的权衡(MapReduce)


12

有人可以在Hadoop集群中的Storm和MapReduce之间进行数据处理时进行权衡取舍吗?当然,除了显而易见的一个之外,Hadoop(在Hadoop集群中通过MapReduce进行处理)是一个批处理系统,而Storm是一个实时处理系统。

我曾经在Hadoop Eco System上工作过一些,但没有与Storm一起工作过。浏览了许多演示文稿和文章后,我仍然找不到满意且全面的答案。

注意:此处的权衡一词并不旨在与类似的事物进行比较。它旨在表示批处理系统中缺少实时获得结果的后果。

Answers:


13

MapReduce:容错分布式计算框架。MapReduce允许您处理大量数据-进行大量工作来防止由于硬件导致的故障。由于MapReduce速度较慢,因此它不是即时计算结果的理想选择。(典型的MapReduce作业需要几分钟或几小时的数量级,而不是微秒)

MapReduce作业将文件(或某些数据存储)作为输入并写入结果文件。如果您希望这些结果可用于应用程序,则有责任将这些数据放在可访问的位置。这可能很慢,并且您可以显示的值与代表系统当前状态的值之间会有时滞。

考虑在构建实时系统中使用MapReduce时,要区分的一个重要区别是训练模型和应用模型。如果您认为模型参数的变化不是很快,可以将它们与MapReduce拟合,然后在要应用模型时提供一种机制来访问这些预拟合参数。

Storm:一个实时的流式计算系统。Storm是在线框架,从这个意义上讲,它意味着与运行中的应用程序进行交互的服务。与MapReduce相比,它在您的应用程序中处理时会接收少量数据(不是整个文件)。您定义要对数据执行的操作的DAG。Storm的一个常见且简单的用例是跟踪计数器,并使用该信息填充实时仪表板。

Storm与(持久)与持久化数据没有任何关系。在这里,流式传输是表示保留您关心的信息并将其他信息丢弃的另一种方式。实际上,您的应用程序中可能已经有一个持久层,该持久层已经记录了数据,因此这是一个很好且合理的关注点分离。

如果您想了解更多... 如果您想了解更多有关与MR匹配参数并应用模型的实时系统的信息,那么这里是我在上构建实时推荐引擎的演讲幻灯片。 HBase。

Google新闻个性化是一种出色的论文,它以一种有趣的方式将实时计数和持久性结合在一起:可扩展的在线协作过滤

MR和Storm的另一个有趣的婚姻是SummingBird。Summingbird允许您定义可以通过Storm或MR应用的数据分析操作。


9

这有点像询问煎锅和您的银器抽屉之间的折衷。实际上,它们不是您要比较的两件事。您可以将它们一起用作较大项目的一部分。

Hadoop本身不是一回事,而是服务联合(例如HDFS,Hive,HBase,MapReduce等)的名称。Storm是与某些服务(例如HDFS或HBase)一起使用的东西。它是一个流处理框架。扩展的Hadoop生态系统中还有其他功能,例如Spark Streaming。

您何时选择流处理框架?当您需要实时响应新数据时。如果需要这种工具,也可以部署这种工具。


我将Hadoop Echo系统中通过MapReduce进行的处理简称为Hadoop,因为这是常用术语(尽管从技术上讲是错误的,我已经相应地更改了问题)。
mbbce 2014年

可能是我错了,但我认为这不仅仅是近实时处理。如果它们之间没有权衡取舍,那么每个人都想近乎实时地做事。混合方法可以在一定程度上获得两全其美的效果。这就是创建Summingbird的原因。
mbbce

1
主要区别在于,流处理系统只能触摸一次数据,并且其本身没有长期状态。有些问题无法通过这种方式解决。对于可以解决的问题,使用不需要首先将数据持久存储到(可重新读取)存储中的系统会更快。MapReduce本质上并不比Storm慢。都是容器。它们是针对不同问题的不同范例。
肖恩·欧文

没有长期的持久状态,是否意味着这样的近实时系统无法长时间累积输入更新?您能否请我参考任何对此进行进一步讨论的资源?
mbbce 2014年

这就是流系统的定义。如果您想象一个系统可以随意访问长期状态,那么它并不是真正的流式传输。
肖恩·欧文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.