MapReduce还是Spark? [关闭]

问题描述 投票:26回答:2

我已经使用cloudera测试了hadoop和mapreduce,发现它非常酷,我以为我是最新且相关的BigData解决方案。但是几天前,我发现了:https://spark.incubator.apache.org/

一个“闪电般的快速群集计算系统”,能够在Hadoop群集的顶部运行,并且显然能够粉碎mapreduce。我看到它在RAM中的作用大于mapreduce。我认为,当您必须执行群集计算以克服单台计算机上可能遇到的I / O问题时,mapreduce仍然有意义。但是由于Spark可以执行mapreduce可以完成的工作,并且在某些操作上可能更有效率,所以MapReduce结束了吗?还是在某些情况下MapReduce可以做更多的事情,或者MapReduce可以比Spark更有效?

apache-spark hadoop mapreduce
2个回答
25
投票

MapReduce本质上是面向批处理的。因此,像Hive和Pig这样的MR实施之上的任何框架本质上也是面向批处理的。对于像机器学习和交互式分析这样的迭代处理,Hadoop / MR不满足要求。 Here是Cloudera在Why Spark上的一篇不错的文章,对它进行了很好的总结。

这不是MR的结局。截至撰写本文时,与Spark相比,Hadoop已经非常成熟,许多供应商都支持它。它将随着时间而改变。 Cloudera已开始将Spark包含在CDH中,随着时间的流逝,越来越多的供应商将其包含在其大数据分发中并为其提供商业支持。在可预见的将来,我们将同时看到MR和Spark。

还具有Hadoop 2(aka YARN),MR和其他模型(包括Spark)也可以在单个群集上运行。因此,Hadoop不会无处可去。


34
投票

取决于您要做什么。

MapReduce的最大优势是处理许多大型文本文件。 Hadoop的实现围绕字符串处理构建,并且I / O非常繁重。

MapReduce的问题是,人们看到了易于使用的并行锤,并且一切开始看起来像钉子。不幸的是,Hadoop除了处理大型文本文件外,在其他任何方面的性能都很糟糕。如果您编写了不错的并行代码,那么通常可以在Hadoop产生其第一个VM之前就完成它。我在自己的代码中看到了100倍的差异。

Spark消除了许多Hadoop的开销,例如对I / O的一切依赖。相反,它将所有内容保留在内存中。如果您有足够的内存,那就太好了,如果没有,就不会那么好。

[请记住,Spark是Hadoop的扩展,而不是替代。如果使用Hadoop处理日志,Spark可能无济于事。如果您遇到更复杂,甚至紧密耦合的问题,那么Spark将大有帮助。另外,您可能喜欢Spark的Scala界面进行在线计算。

© www.soinside.com 2019 - 2024. All rights reserved.