Spark内部是否使用Map-Reduce?

Enr*_*ado 2 mapreduce apache-spark rdd apache-spark-sql

Spark内部使用MapReduce吗?(自己的地图缩小)

当我第一次听到有人告诉我“Spark 使用 Map-Reduce”时,我很困惑,我总是知道 Spark 是 Hadoop Map-Reduce 的替代品。

在我检查谷歌后,我发现一个网站对此做了一些太简短的解释: https: //dzone.com/articles/how-does-spark-use-mapreduce

但互联网的其余部分仅比较 Spark 和 Map-Reduce。

然后有人向我解释说,当 Spark 创建 RDD 时,数据会分割到不同的数据集中,如果您使用例如 SPAR.SQL 的查询,则不应是映射缩减,例如:

select student 
from Table_students 
where name = "Enrique"
Run Code Online (Sandbox Code Playgroud)

Spark 内部正在执行映射缩减来检索数据(来自不同的数据集)。

这是真的 ?

如果我使用 Spark Mlib 来使用机器学习,我总是听说机器学习与 MapReduce 不兼容,因为它需要很多交互,而 MapReduce 使用批处理。

在Spark Mlib中,Spark内部也使用Map reduce吗?

how*_*wie 8

Spark 具有先进的有向无环图 (DAG) 引擎,支持循环数据流。每个 Spark 作业都会创建一个要在集群上执行的任务阶段的 DAG。与 MapReduce 创建具有两个预定义阶段(Map 和 Reduce)的 DAG 相比,Spark 创建的 DAG 可以包含任意数量的阶段。DAG 是 MapReduce 模型的严格概括。这使得某些作业比 MapReduce 中更快地完成,简单的作业只需一个阶段即可完成,而更复杂的任务则在多个阶段的单次运行中完成,而不必拆分为多个作业。

所以,Spark可以编写map-reduce程序,但实际上在内部使用DAG。

参考: