Spark的天然优势--内存计算

所有的计算都是基于内存的,为什么Spark说是基于内存进行计算的呢?在这里我有两点理解:
1.Spark支持将RDD数据集Persist或者Cache到内存里去,如果将频繁使用的数据集缓存到内存中,则可以大大减少IO、网络传输以及重新计算的代价,尤其是对于Shuffle后的数据集进行缓存,可显著提高应用运行速度。
2.基于pipeline的计算执行策略,此策略可以实现对内存中数据的重用最大化,减少了大量中间结果的IO操作,此优势可相较于Hadoop的MapReduce而言。我们通过一个计算来模拟MapReduce的计算逻辑和Spark的不同,如计算1+1+1+1+1=5这个过程:
MapReduce的计算过程如下:1+1=2,2+1=3,3+1=4,4+1=5
而Spark则直接是:1+1+1+1+1=5
就是说,在MapReduce的计算过程中,在计算的流程中会涉及到大量的中间结果存储的问题,而且在计算过程中这些中间结果都会被换入到磁盘,然后再读取到内存,而造成大量的IO代价。
然而Spark则不会如此,在一个Stage内部,各个计算操作则可以在内存中Pipeline执行完成,不会涉及到中间结果在磁盘和内存中换入换出的问题,从而减少了大量的IO,计算速度自然会快很多。
PS,这个1+1+1+1+1=5例子并不是真实的例子,只是对计算逻辑的一种模拟,在Spark中则可以理解成一系列的Map、Filter等操作的组合。
以上描述的Spark这两种基于内存计算优势的策略无不体现了Spark对内存中数据的重用最大化,可见充分利用已经存在于内存中的数据是优化执行速度的关键之处,无论是在设计系统架构或者优化ETL计算流程中都是需要重点考虑且行之有效的关注点。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值