Storm 和 Hadoop 之间的权衡 (MapReduce)

数据挖掘 大数据 效率 apache-hadoop 分散式
2021-09-21 03:54:10

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

我曾与 Hadoop 生态系统合作过一些,但我没有与 Storm 合作过。看了很多介绍和文章,还是没能找到一个满意而全面的答案。

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

2个回答

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

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

在考虑使用 MapReduce 构建实时系统时,一个重要的区别是训练你的模型和应用你的模型。如果你认为你的模型参数不会很快改变,你可以用 MapReduce 拟合它们,然后当你想应用你的模型时,有一种机制可以访问这些预拟合参数。

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

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

如果您想了解 更多... HBase。

Google News Personalization: Scalable Online Collaborative Filtering是一篇以有趣的方式将实时计数和持久性结合起来的优秀论文

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

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

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

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