Spark_Spark比mapreduce快的原因

Spark 为什么比 mapreduce 快?

最重要的3点,

数据缓存 : 中间结果可以缓存在内存中复用

资源管理 :executor task 管理,不同stage的task可以运行在同一个executor上

任务调度 :  dag 对比多阶段mr

1.任务模型的优化DAG图对比多阶段的MR,启动申请资源耗时更少)

  • mapreduce框架中,一个程序只能拥有一个map一个reduce的过程,如果运算逻辑很复杂,一个map+一个reduce是表述不出来的,可能就需要多个map-reduce的过程;mapreduce框架想要做到这个事情,就需要把第一个map-reduce过程产生的结果,写入HDFS,然后由第二个map-reduce过程去hdfs读取后计算,完成后又将结果写入HDFS,再交由第三个map-reduce过程去计算! 重点!!!–这样一来,一个复杂的运算,在mapreduce框架中可能就会发生很多次写入并读取HDFS的操作,而读写HDFS是很慢的事情
  • spark框架,采用的是以rdd为核心,dag为调度,把上面的mapreduce-mapreduce-mapreduce的过程,连续执行,不需要反复落地到HDFS,这样就会比mapreduce快很多啦

2.Spark支持在内存中缓存结果(基于RDD, RDD分布式弹性数据集, rdd.cache(),数据可复用)
比如一个复杂逻辑中 ,一个map-reduce产生的结果A,如果在后续的map-reduce过程中需要反复用到,spark可以把A缓存到内存中,这样后续的map-reduce过程就只需要从内存中读取A即可,也会加快速度

3.资源模型不同 (spark拥有更完善的资源管理方案,task可以复用core)
spark是多线程模型,每个worker节点运行一个或多个executor服务,每个task作为线程运行在executor中,task间可共享资源,
而MR是多进程模型,任务调度(频繁申请、释放资源)和启动开销大,不适合低延迟类型作业

Spark 对比 mapreduce的优势有哪些

  • 计算模型优势,spark的核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比 MapReduce 丰富的模型,可以快速在内存中对数据集 进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法。。
  • Spark 和 Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据 通信是基于内存,而 Hadoop 是基于磁盘。
  • Spark Task的启动时间快。Spark采用fork线程的方式,而Hadoop采用创建新的进程 的方式。
  • Spark只有在shuffle的时候将数据写入磁盘,而Hadoop中多个MR作业之间的数据交 互都要依赖于磁盘交互
  • Spark的缓存机制比HDFS的缓存机制高效。

你可能感兴趣的:(Spark,spark,mapreduce,大数据)