我已经使用cloudera测试了hadoop和mapreduce,我发现它非常酷,我认为我是最新且相关的BigData解决方案。但是几天前,我发现了这个: https://spark.incubator.apache.org/
“Lightning快速集群计算系统”,能够在Hadoop集群的顶层工作,并且显然能够破坏mapreduce。我看到它在RAM中比mapreduce更有效。 我认为当你必须进行集群计算来克服单个机器上的I / O问题时,mapreduce仍然是相关的。 但是,由于Spark可以完成mapreduce所做的工作,并且可能在几个操作上更有效率,它不是MapReduce的结束吗?或者MapReduce可以做些什么,或者MapReduce在特定环境中比Spark更有效?
答案 0 :(得分:31)
取决于你想做什么。
MapReduce最大的优势在于处理大量的大型文本文件。 Hadoop的实现是围绕字符串处理构建的,它的I / O非常重。
MapReduce的问题在于人们看到简单的平行锤,一切看起来都像钉子一样。不幸的是,除了处理大型文本文件之外,Hadoop的性能非常糟糕。如果您编写了一个不错的并行代码,您通常可以在Hadoop生成其第一个VM之前完成它。我在自己的代码中看到了100x的差异。
Spark消除了许多Hadoop的开销,例如依赖I / O来解决所有问题。相反,它将所有内容保存在内存中。如果你有足够的记忆力,那就太好了,如果你没有,那就太好了。
请记住,Spark是Hadoop的扩展,而不是替代品。如果您使用Hadoop处理日志,Spark可能无济于事。如果你有更复杂的,可能紧密耦合的问题,那么Spark会帮助很多。此外,您可能喜欢Spark的Scala接口进行在线计算。
答案 1 :(得分:25)
MapReduce本质上是面向批处理的。因此,像Hive和Pig这样的MR实现之上的任何框架本质上也是面向批处理的。对于机器学习和交互式分析的迭代处理,Hadoop / MR不符合要求。 Here是来自Cloudera的一篇很好的文章Why Spark
,它很好地总结了它。
这不是MR的结束。在撰写本文时,与Spark相比,Hadoop已经非常成熟,很多供应商都支持它。它会随着时间而改变。 Cloudera已开始将Spark纳入CDH,随着时间的推移,越来越多的供应商将其纳入其大数据发行版并为其提供商业支持。在可预见的未来,我们会看到MR和Spark并行。
同样使用Hadoop 2(又名YARN),MR和其他模型(包括Spark)可以在单个集群上运行。所以,Hadoop不会去任何地方。