apache-spark - MapReduce 还是 Spark?

标签 apache-spark hadoop mapreduce

<分区>

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

一个“闪电般快速的集群计算系统”,能够在 Hadoop 集群的顶部工作,并且显然能够碾压 mapreduce。我看到它在 RAM 中比 mapreduce 更有效。 我认为当您必须进行集群计算以克服单台机器上可能遇到的 I/O 问题时,mapreduce 仍然很重要。 但是,由于 Spark 可以完成 mapreduce 所做的工作,并且可能在多个操作上更有效率,这不是 MapReduce 的终结吗?还是 MapReduce 可以做更多的事情,或者 MapReduce 是否可以在特定上下文中比 Spark 更高效?

最佳答案

取决于你想做什么。

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

MapReduce 的问题在于,人们看到了简单的并行性锤子,而一切都开始看起来像钉子。不幸的是,Hadoop 在处理大型文本文件以外的任何方面的性能都很糟糕。如果你写了一个像样的并行代码,你通常可以在 Hadoop 甚至产生它的第一个 VM 之前完成它。我在自己的代码中看到了 100 倍的差异。

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

请记住,Spark 是 Hadoop 的扩展,而不是替代品。如果你使用 Hadoop 来处理日志,Spark 可能帮不上什么忙。如果你有更复杂的,可能是紧密耦合的问题,那么 Spark 会很有帮助。此外,您可能喜欢 Spark 的 Scala 接口(interface)用于在线计算。

关于apache-spark - MapReduce 还是 Spark?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22167684/

相关文章:

apache-spark - Spark 中的快速 Parquet 行数

hadoop - 在hadoop字数示例中,为什么不使文本也变为静态

java - Hadoop 上的错误 : Could not find or load main class org. apache.hadoop.hdfs.tools.GetConf

hadoop - mapreduce 框架基于什么决定是否启动组合器

apache-spark - 如何将参数动态传递给 Apache Spark 中的过滤函数?

scala - 如何访问InputDStream数据?

java - 无法将预测映射到 JavaRDD

mongodb - 如何在mongoDB中使用mapReduce存储来自hdfs的处理数据

hadoop - 没有 yarn 映射减少工作?

hadoop - 重启 Amazon EMR 集群