Answers:
MapReduce:容错分布式计算框架。MapReduce允许您处理大量数据-进行大量工作来防止由于硬件导致的故障。由于MapReduce速度较慢,因此它不是即时计算结果的理想选择。(典型的MapReduce作业需要几分钟或几小时的数量级,而不是微秒)
MapReduce作业将文件(或某些数据存储)作为输入并写入结果文件。如果您希望这些结果可用于应用程序,则有责任将这些数据放在可访问的位置。这可能很慢,并且您可以显示的值与代表系统当前状态的值之间会有时滞。
考虑在构建实时系统中使用MapReduce时,要区分的一个重要区别是训练模型和应用模型。如果您认为模型参数的变化不是很快,可以将它们与MapReduce拟合,然后在要应用模型时提供一种机制来访问这些预拟合参数。
Storm:一个实时的流式计算系统。Storm是在线框架,从这个意义上讲,它意味着与运行中的应用程序进行交互的服务。与MapReduce相比,它在您的应用程序中处理时会接收少量数据(不是整个文件)。您定义要对数据执行的操作的DAG。Storm的一个常见且简单的用例是跟踪计数器,并使用该信息填充实时仪表板。
Storm与(持久)与持久化数据没有任何关系。在这里,流式传输是表示保留您关心的信息并将其他信息丢弃的另一种方式。实际上,您的应用程序中可能已经有一个持久层,该持久层已经记录了数据,因此这是一个很好且合理的关注点分离。
如果您想了解更多... 如果您想了解更多有关与MR匹配参数并应用模型的实时系统的信息,那么这里是我在上构建实时推荐引擎的演讲幻灯片。 HBase。
Google新闻个性化是一种出色的论文,它以一种有趣的方式将实时计数和持久性结合在一起:可扩展的在线协作过滤
MR和Storm的另一个有趣的婚姻是SummingBird。Summingbird允许您定义可以通过Storm或MR应用的数据分析操作。
这有点像询问煎锅和您的银器抽屉之间的折衷。实际上,它们不是您要比较的两件事。您可以将它们一起用作较大项目的一部分。
Hadoop本身不是一回事,而是服务联合(例如HDFS,Hive,HBase,MapReduce等)的名称。Storm是与某些服务(例如HDFS或HBase)一起使用的东西。它是一个流处理框架。扩展的Hadoop生态系统中还有其他功能,例如Spark Streaming。
您何时选择流处理框架?当您需要实时响应新数据时。如果需要这种工具,也可以部署这种工具。