有人可以告诉我有关在Hadoop集群中选择Storm和MapReduce进行数据处理时所涉及的权衡方面的问题吗?当然,除了显而易见的外,Hadoop(通过Hadoop群集中的MapReduce处理)是批处理系统,Storm是一个实时处理系统。

我已经与Hadoop Eco System合作了,但是我没有与Storm合作。在浏览了许多演讲和文章之后,我仍然找不到令人满意和全面的答案。

注意:此处的“权衡”一词并不是要与类似事物进行比较。它的目的是代表批处理系统中缺乏实时结果的后果。

有帮助吗?

解决方案

MapReduce: :一个容错分布式计算框架。 MapReduce允许您在大量数据上操作 - 进行大量工作以防止由于硬件而导致故障。 MAPREDUCE是一个糟糕的选择,因为它很慢,因为它很慢。 (典型的MapReduce作业需要几分钟或几个小时的顺序,而不是微秒)

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

考虑在构建实时系统中使用MapReduce时,要做出的一个重要区别是训练模型并应用模型。如果您认为模型参数不会快速变化,则可以使用MapReduce拟合它们,然后在要应用模型时具有访问这些预拟合参数的机制。

风暴: :实时流式计算系统。 Storm是在线框架,从这个意义上讲,这是一种与运行应用程序交互的服务。与MapReduce相反,它在您的应用程序中处理了小块数据(不是整个文件)。您定义了一系列操作以执行数据。风暴的常见用例是跟踪计数器,并使用该信息填充实时仪表板。

Storm与持续数据无关。在这里,流媒体是说出您关心的信息并将其余的扔掉的另一种方式。实际上,您的应用程序中可能有一个已经记录数据的持久性层,因此这是一个良好而有道理的关注点。

如果您想了解更多...如果您想了解有关将参数符合MR的实时系统的更多信息,并以不同的方式应用模型 这是我在HBASE上构建实时推荐引擎的演讲的幻灯片。

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

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

其他提示

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

Hadoop本身不是一回事,而是服务联合会的名称,例如HDFS,Hive,Hbase,MapReduce等。风暴是您在其中一些服务中使用的,例如HDFS或HBASE。这是一个流处理框架。扩展的Hadoop生态系统中还有其他,例如Spark Streaming。

您什么时候选择流处理框架?当您需要在近实时对新数据做出反应时。如果您需要这种工具,也可以部署这种工具。

许可以下: CC-BY-SA归因
scroll top