为什么Spark比MapReduce快?

为什么Spark比MapReduce快?

小记。

  1. MapReduce是基于磁盘的计算引擎,这里的"基于磁盘"指的是,mr多个作业之间的数据通信,是基于磁盘IO的,Map阶段产生的数据必须要全部的写入磁盘中,且这些数据会进行sort和combine操作,再进入reduce阶段,IO效率十分低。
    Spark是基于内存DAG计算模型,能够对计算过程进行优化,减少shuffle和数据落盘的次数,在每个阶段中都会尽可能的使用内存,大大提高计算的效率,并且数据通信也是基于内存的。
  2. MR是多进程运行,虽然易控制资源且一个进程失败不影响其他进程,但是进程的启动和销毁会占用大量的时间,从而影响效率。这也是我们使用MR执行简单任务时也会耗费很长时间的主要原因。
    Spark是多线程运行,首先线程的启停比进程快很多。粗粒度的资源申请,效率高,但是也有一个缺点:若同一节点execute中有多个task时,会容易出现资源被征用的情况。因为spark中资源分配的最细粒度是execute,无法对更细的task进行资源控制。所以在处理巨大数量级的任务时,在资源有限的情况下,运行会不稳定。
  3. MR只要有reduce,就必然要进行排序和shuffle。mr的map端shuffle对map的输出结果写入缓存、分区、排序、合并后再写入磁盘。reduce端的shuffle是对不同map机器上取回输出的数据,进行归并后再交由reduce处理。
    Spark提供了多种shuffle方案的选择,高效利用内存,同时有可能减少或避免shuffle操作。
  4. spark有更加灵活的内存管理机制:堆内内存和堆外内存和动态内存管理机制。

注意:并不是所有情况下Spark都比MapReduce要快,Spark对机器性能的要求相对较高,RDD的并行计算又一排瘀多核CPU的支持。

所以在机器性能有限,或者数据量巨大的情况下,可以选择更加稳定的MapReduce。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m是只奶牛猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值