Spark是否在内部使用Map Reduce?(他自己的地图缩小)
当我第一次听到有人告诉我,"Spark使用map reduce"时,我很困惑,我总是知道Spark是Hadoop map reduce的主要对手。
在谷歌上查看后,我发现一个网站对此做了一些简短的解释:https://dzone.com/articles/how-does-spark-use-mapreduce
但互联网的其余部分是关于Spark和Map Reduce的。
有人向我解释说,当spark生成RDD时,数据会被拆分到不同的数据集中,如果你使用的是例如SPAR.SQL,那么查询不应该是map reduce,比如:
select student
from Table_students
where name = "Enrique"
Spark内部正在进行map reduce以检索数据(来自不同的数据集)。
这是真的吗?
如果我使用Spark Mlib,使用机器学习,我总是听说机器学习与map reduce不兼容,因为它需要太多的交互,map reduces使用批处理。。
在Spark Mlib中,Spark内部是否也使用Map reduce?
Spark具有一个支持循环数据流的高级有向无循环图(DAG)引擎。每个Spark作业都会创建一个DAG,其中包含要在集群上执行的任务阶段。与MapReduce创建具有两个预定义阶段(Map和Reduce)的DAG相比,Spark创建的DAG可以包含任何数量的阶段。DAG是对MapReduce模型的严格推广。这使得一些作业可以比MapReduce更快地完成,简单的作业只需一个阶段即可完成,而更复杂的任务则需要在多个阶段的单次运行中完成,而不必拆分为多个作业。
所以,Spark可以编写map reduce程序,但实际上在里面使用了DAG。
参考:
Apache Spark中的有向无循环图DAG