Spark设计思想浅析

Spark is no rocket science!——博主

 

了解分布式计算的朋友,一定知道DAG这样一个概念。其实我接触DAG也是在学习MapReduce时了解到的。(具体可查阅《大数据日知录:架构与算法》这本书。推荐阅读。)

DAG,有向无环图。可以脑补一下DAG是个什么东西:有向、无环、图,如是而已,意思实在是再明白不过了。如果把DAG讲的复杂一点,还会涉及到DAG计算系统的三层结构等较深入的设计与实现细节。

还有一个概念大家也应该有所了解:批处理计算系统。批处理,批量处理。批量,有数据量巨大的意思。批处理计算系统,就是要在巨大的数据量上做计算。

Spark就是一个DAG的批处理计算系统。MapReduce算一个DAG的批处理计算框架。

有向无环图的计算过程,相邻的两个节点之间如何传输数据?在MapReduce框架中,使用的是先将计算结果保存到磁盘,然后通过网络传输到下一节点。把计算结果保存到磁盘有一个问题,那就是磁盘的读写速度,以固态硬盘为例,大约为500M/s,这个速度已经很快了;而DDR3内存的读写速度大致在8G/s左右。这差距在一个数量级。节点之间网络传输的速度可以提高到千兆甚至万兆,在硬件支持的情形下,大致也有1G/s的传输速度。可以说,磁盘的读写是最耗时的。

减少磁盘读写的比重是提高计算速率的一个重要方面。所以Berkeley实验室提出了RDD这样一个概念。一段文字:

  RDD具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算。现有的数据流系统对两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域很常见;二是交互式数据挖掘工具。这两种情况下,将数据保存在内存中能够极大地提高性能。为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD是只读的,并且只能通过其他RDD上的批量操作来创建。尽管如此,RDD仍然足以表示很多类型的计算,包括MapReduce和专用的迭代编程模型(如Pregel)等。我们实现的RDD在迭代计算方面比Hadoop快20多倍,同时还可以在5-7秒内交互式地查询1TB数据集。——Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing译文

  

除了读写速率的提高引起的计算速率的提升,另外一方面,在MapReduce计算框架下,每个job只能有单一一个Reduce,每个job启动开销较大的问题也在更通用的DAG模型下得到了解决。为什么?DAG模型是Map/Reduce任务的抽象化。在Spark这个DAG批处理计算系统里,有更多的Transformation和action可以选择,也包括了Map和Reduce。

 

转载于:https://www.cnblogs.com/xiamodeqiuqian/p/4896575.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值