Spark初识

来源:互联网 发布:上海的美食知乎 编辑:程序博客网 时间:2024/06/04 19:09

参考:http://blog.sciencenet.cn/blog-425672-520947.html 


一、与Hadoop的渊源


        没接触Spark之前,觉得这是一个高深的学问,今天大致看了一下简介发现它和hadoop平台并没有本质的区别,是对Hadoop的一种拓展,充分利用内存。Spark基于hadoop平台,继承了容错性、伸缩性和位置感知性调度等优点,沿用了HDFS等Hadoop底层框架;他最大的优点是充分利用内存计算并显式存储工作集数据。

   MapReduce基于非循环的数据流模型,从文件系统中加载记录,通过一系列的计算处理后,写回稳定存储;由此反复的计算最终得到最后的结果。这会存在两个问题:1.稳定存储的读写、传输将产生很大开销;2. 无法在多个并行操作之间重用工作数据集。Spark所采用的RDD非常好的解决了以上问题。      Spark采用了RDD(Resilient Distributed Datasets,弹性分布式数据集),这是一种分布式的内存抽象,允许在大规模集群上执行内存计算。RDD解决了稳定存储的读写开销问题;并允许在多个查询时显式的将工作集缓存在内存中,以便于后期的工作集重用。 


二、弹性分布式数据集(RDD


     RDD的目标是为基于数据集的应用(即多个并行操作重用中间结果的这类应用)提供抽象,同时保持MapReduce及其相关模型的优势特性:即自动容错、位置感知性调度和可伸缩性。在这些特性中最难实现是自动容错。分布式数据集的容错方式分两种:数据检查点和记录数据的更新,关于以上两点的介绍可以看我上面的参考内容,里面有很详细的介绍。

  RDD只能通过在稳定物理存储中和数据集或者其他已有的RDD上执行确定性操作来创建。我认为,这个是HDFS的内存实现,一次写入、多次读取,只支持粗粒度的更新和插入。这种实现方式还有另外一个好处,自动容错。但数据和计算发生错误时,只需要从上游物理存储或者RDD中重新计算即可恢复。

0 0
原创粉丝点击