为什么Spark比MapReduce快?

MapReduce慢是因为 模型很呆板 ,频繁的Io操作 Spark快的话不仅是因为它是内存迭代计算吧? 具体什么是内存迭代计算?
关注者
152
被浏览
109,825
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

Spark计算比MapReduce快的根本原因在于DAG计算模型。一般而言,DAG相比Hadoop的MapReduce在大多数情况下可以减少shuffle次数。

Spark的DAGScheduler相当于一个改进版的MapReduce,如果计算不涉及与其他节点进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。

但是,如果计算过程中涉及数据交换,Spark也是会把shuffle的数据写磁盘的!!!

另外有同学提到,Spark是基于内存的计算,所以快,这也不是主要原因,要对数据做计算,必然得加载到内存,Hadoop也是如此,只不过Spark支持将需要反复用到的数据给Cache到内存中,减少数据加载耗时,所以Spark跑机器学习算法比较在行(需要对数据进行反复迭代)。Spark基于磁盘的计算依然也是比Hadoop快。

刚刚提到了Spark的DAGScheduler是个改进版的MapReduce,所以Spark天生适合做批处理的任务。而不是某些同学说的:Hadoop更适合做批处理,Spark更适合做需要反复迭代的计算。

Hadoop的MapReduce相比Spark真是没啥优势了。但是他的HDFS还是业界的大数据存储标准。