当前位置:首页 > 开发 > 行业应用 > 正文

Spark之我看(I)什么是RDD

发表于: 2014-07-29   作者:鞠文婷   来源:转载   浏览:
摘要:        一般来讲,对于陌生的名词,大家的第一个反应都是“What is it?”。       RDD是Spark的核心内容,在Spark的官方文档中解释如下:RDD is a fault-tolerant collection of elements that can be operated on in paralle

       一般来讲,对于陌生的名词,大家的第一个反应都是“What is it?”。

      RDD是Spark的核心内容,在Spark的官方文档中解释如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel。由此可见,其中有两个关键词:fault-tolerant & in parallel。首先,容错性是RDD的一个重要特性;其次,它是并行计算的数据。

      RDD的中文解释为:弹性分布式数据集,全称Resilient Distributed Datasets,宾语是dataset,即内存中的数据库。RDD只读、可分区,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。所谓弹性,是指内存不够时可以与磁盘进行交换。这涉及到了RDD的另一特性:内存计算,就是将数据保存到内存中。同时,为解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。

      (关于cache的设置以及Spark的一些基础概念,这里解释得很详细。)

 

      如果看到这里,你的思维里对RDD还是没有任何概念的话,或许可以参照我的形象化理解:RDD,就是一个被武装起来的数据集。

      主体:

            a、由源数据分割而来,源码中对应splits变量;

      武器有下:

            b、数据集体内包含了它本身的“血统”信息,即dependencies变量,存储着它的父RDD及两者关系;      

            c、计算函数,即其与父RDD的转化方式,对应源码中的iterator(split) & compute函数;

            d、一些关于如何分块以及如何存放位置的元信息,eg:partitioner & preferredLocations。

 

       有了这些武器,RDD的容错机制也就显而易见了。容错,顾名思义就是在存在故障的情况下,计算机系统仍能正常工作。容错通常有两种方式:checkpoint数据检查点) & logging update记录更新)RDD采用的是logging update

       Checkpoint意味着要在各个机器间复制大数据,花费会很高,这种拷贝操作相当缓慢,而且会消耗大量的存储资源,因此deserted。Logging update,仅支持粗颗粒度变换。也就是说,仅记录在单个块上执行的单个操作,然后创建某个RDD的变换序列存储下来,数据丢失时,就可通过“血统”重新计算,恢复数据。

       Nevertheless,血缘链(变换序列)变得很长时,建议用户此时建立一些数据检查点加快容错速度。(saveAstextFile方法手动设置)

 

       其实相比Spark的架构,网上关于RDD的一些介绍,包括设计理念、容错、内存计算等都已经比较详细了,因此我在这里只是写写自己对RDD这个概念的理解,欢迎批评指正~ 

       Ps:不喜望喷~

 

       PPs:如果我解释得不够清楚,附上一些websites,希望可以帮到你们

               RDD的原理:

https://github.com/jackfengji/test_pro/wiki/RDD%E7%9A%84%E5%8E%9F%E7%90%86

               源码详解RDD:http://www.tuicool.com/articles/zQrume

               RDD的依赖关系(源码):http://www.tuicool.com/articles/U7FVBfY

 

Spark之我看(I)什么是RDD

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1背景介绍 现今分布式计算框架像MapReduce和Dryad都提供了高层次的原语,使用户不用操心任务分发和
本文目的 最近在使用Spark进行数据清理的相关工作,初次使用Spark时,遇到了一些挑(da)战(ken)
http://www.cnblogs.com/cenyuhai/p/3779125.html 最近在阅读源码,发现这篇博客内容非常好,有助于
从一个简单的例子,来看rdd的演化,和stage是如何生成的(过程灰常之复杂和抽象,请参考附件的图来
与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对
与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对
概念 RDD具有以下一些特点: 创建:只能通过转换( transformation,如map/filter/groupBy/join等,
RDD详解 RDD(Resilient Distributed Datasets弹性分布式数据集),是spark中最重要的概念,可以简
什么是RDD Spark是围绕着RDD(Resilient Distributed Dataset,弹性分布式数据集)建立起来的,也就是
什么是RDD Spark是围绕着RDD(Resilient Distributed Dataset,弹性分布式数据集)建立起来的,也就是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号