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