Spark和MapReduce,为什么Spark比MR更快?原理是什么?

4
据我所知,Spark 将数据从每个节点的磁盘(HDFS)预加载到每个节点的 RDD 中进行计算。但是据我猜测,MapReduce 也必须将数据从 HDFS 加载到内存中,然后在内存中进行计算。那么,为什么 Spark 更快呢?只因为 MapReduce 每次想要进行计算时都需要将数据加载到内存中,而 Spark 预加载了数据。非常感谢。

可能是Spark相对于MapReduce的唯一优势是缓存吗?的重复问题。 - aaronman
也许你可以在这里找到答案:https://dev59.com/SlwY5IYBdhLWcg3weXzV - Oshan Wisumperuma
2个回答

0

0

有一个叫做弹性分布式数据集(RDD)的概念,Spark使用它来透明地将数据存储在内存中,并在需要时将其持久化到磁盘上。

而在MapReduce中,在Map和Reduce任务之后,数据将被洗牌和排序(同步障碍),并写入磁盘。

在Spark中,没有减慢MapReduce速度的同步障碍。而且内存的使用使执行引擎非常快速。


Spark中仍然存在shuffle,实际上我相信他们最近才实现了内存shuffle,在此之前它还会创建文件。 - aaronman
请查看这篇论文,其中提供了一些关于Spark的洗牌问题的例子。目前情况比Hadoop还要糟糕。 - aaronman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接