`

Spark RDD:弹性分布式数据集

 
阅读更多
文/牛肉圆粉不加葱(简书作者)
原文链接:http://www.jianshu.com/p/207607888767
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

  1. RDD是只读的、分区记录的集合
  2. 一个RDD的生成只有两种途径:
    • 基于内存集合或稳定物理存储中的数据集执行确定性操作
    • 通过在已有的RDD上执行转换操作
  3. RDD具有自动容错、位置感知和可伸缩性特点
  4. RDD不需要物化,RDD通过Lineage来重建丢失的分区:一个RDD中包含了如何从其他RDD衍生所必须的相关信息,从而不需要检查点就可以重构丢失的数据分区
  5. RDD只支持粗粒度转换,即一个操作会被应用在RDD的所有数据上
  6. RDD包含
    • partition:分区,一个RDD会有一个或多个分区
    • preferredLocations(p):根据分区p存放的位置,返回在哪个节点访问更快
    • dependencies():RDD的依赖关系
    • compute(p, context):对于分区p而言,进行迭代计算
    • partitioner():RDD的分区函数,该属性只存在于(K、V)类型的RDD中,对于非(K、V)类型的partitioner的值就是None;partitioner()决定了RDD本身的分区数量,也可作为其父RDD Shuffle 输出中每个分区进行数据切割的依据

RDD分区

  1. 程序员还可以从两个方面控制RDD,即持久化和分区。用户可以请求将RDD缓存,这样运行时将已经计算好的RDD分区存储起来,以加速后期的重用。缓存的RDD一般存储在内存中,但如果内存不够,可以写到磁盘上
  2. RDD还允许用户根据关键字(key)指定分区顺序,这是一个可选的功能。目前支持哈希分区和范围分区。分区的多少涉及对这个RDD进行并行计算的粒度,因为每一个分区的计算都在一个单独的任务上执行
  3. 通过备份任务的拷贝,RDD还可以处理落后任务(即运行很慢的节点)
  4. 与DSM(分布式共享内存)相比,RDD有两个好处:
    • 对于RDD中的批量操作,运行时将根据数据存放的位置来调度任务,从而提高性能
    • 对于基于扫描的操作,如果内存不足以缓存整个RDD,就进行部分缓存。把内存放不下的分区存储到磁盘上,此时性能与现有的数据流系统差不多
  5. 当然也可以在创建RDD的时候不指定分区,这时就采用默认的分区数,即程序所分配到的资源的CPU核的个数

RDD的优先位置

  1. RDD优先位置属性与Spark中的调度相关,返回的是此RDD的每个partition所存储的位置,按照“移动数据不如移动计算”的理念,在Spark进行任务调度的时候,尽可能地将任务分配到数据块所存储的位置(如果一个partition对应的数据块存储了多份,也会返回多份地址)

RDD依赖关系

  1. 在Spark中,存在两种类型的依赖:
    • 窄依赖:每一个父RDD的分区至多只被子RDD的一个分区所使用
    • 宽依赖:每一个父RDD的分区会被子RDD的多个分区所使用
  2. 窄依赖和宽依赖的区别:
    • 窄依赖可以在集群的一个节点上如流水线一般地执行,可以计算所有父RDD的分区,相反的,宽依赖需要取得父RDD所有分区上的数据进行计算,将会执行MapReduce一样的shuffle操作
    • 对于窄依赖来说,节点计算失败后的恢复会更加有效,相反的,在有宽依赖的继承关系中,一个节点的失败将会导致其父RDD的多个分区重新计算,代价非常高
分享到:
评论

相关推荐

    PySpark_Day03:RDD(弹性分布式数据集).pdf

    PySpark_Day03:RDD(弹性分布式数据集)是 PySpark 项目的第三天的课程内容,主要讲解 Spark Core 的核心概念,即 RDD(弹性分布式数据集)。RDD 是 Spark 的基础构建块,用于处理大规模数据集。下面是对 RDD 的...

    Spark RDD弹性分布式数据集

    RDD(Resilient Distributed Datasets弹性分布式数据集)是一个容错的、并行的数据结构,可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或...

    弹性分布式数据集pdf

    根据给定的信息,本文将详细解释“弹性分布式数据集(Resilient Distributed Dataset,简称RDD)”在Apache Spark中的核心概念及其应用场景。 ### 弹性分布式数据集(RDD) #### 定义 RDD是Apache Spark的核心数据...

    spark学习 Spark: Cluster Computing withWorking Sets Matei

    Spark通过引入一种名为弹性分布式数据集(Resilient Distributed Datasets, RDDs)的抽象概念实现了这一目标。 #### 弹性分布式数据集(RDDs) RDD是分布在一组机器上的只读对象集合,能够在分区丢失的情况下重建...

    spark rdd 论文翻译_中文_spark老汤

    Spark RDD(弹性分布式数据集)是Apache Spark框架中的核心组件,它是Spark处理大规模数据的核心抽象。RDD代表了一种可容错、只读、分片的数据集合,这些分片可以分布在Spark集群的不同节点上。RDD的设计目标是提供...

    spark rdd api dataframe 以及dataframe rdd dataset 相互转换 spark sql

    在大数据处理框架Apache Spark中,RDD(弹性分布式数据集)是基础的数据处理抽象,它提供了容错、分布式数据操作的能力。而DataFrame和Dataset是Spark SQL中更高级的数据抽象,提供了更多的优化和易于使用的特点。...

    RDD:基于内存的集群计算容错抽象

    本文介绍了一种新的分布式内存抽象概念——弹性分布式数据集(RDD),旨在解决现有数据流模型(如MapReduce)在处理某些类型的应用程序时存在的效率问题,特别是那些需要迭代计算或交互式数据挖掘的应用。RDD结合了...

    Spark快速数据处理.pdf

    《Spark快速数据处理》系统讲解Spark的...如何创建和保存RDD(弹性分布式数据集),如何用Spark分布式处理数据,如何设置Shark,将Hive查询集成到你的Spark作业中来,如何测试Spark作业,以及如何提升Spark任务的性能。

    spark RDD 论文

    - **Spark RDD 的起源**:本文档介绍的是 Spark 中的核心抽象概念——弹性分布式数据集(Resilient Distributed Datasets, RDD),这一概念由加州大学伯克利分校的研究团队提出。Spark 作为一种集群计算框架,它的...

    构建在Spark之上的分布式矩阵运算库_Scala_下载.zip

    Marlin的高效性能得益于其对Spark内存管理的深度集成,以及对Spark RDD(弹性分布式数据集)的智能处理。 在使用Marlin时,我们需要先搭建Spark环境,这通常包括安装Java、配置Hadoop(如果需要的话)以及下载并...

    03_SparkRDD(RDD编程实战)

    Spark RDD(弹性分布式数据集)是Apache Spark的核心概念,它是一种可分区、容错并可以在集群上并行处理的数据集合。在本实例中,我们将学习如何使用Python接口PySpark来处理RDD,通过实现三个基本的运营案例:计算...

    大数据学习笔记

    - **2.1 弹性分布式数据集 (RDD)** - **定义**:RDD是Spark中最基本的数据抽象,是一个不可变的、分布式的数据集合。 - **特点**: - 支持容错恢复:通过血统信息追踪丢失的数据块。 - 支持缓存:可以将RDD持久...

    spark: RDD与DataFrame之间的相互转换方法

    在大数据处理框架Spark中,RDD(弹性分布式数据集)和DataFrame是两种常用的抽象数据类型,它们分别对应于不同的操作接口和优化技术。RDD是最基础的分布式数据集合,提供了一种容错的并行处理数据的方式。而...

    从小火苗到燃烧的火车:Spark大数据处理秘籍.zip

    在Spark的世界里,一切都是由小小的数据片段组成的,这些小片段被称为RDD(弹性分布式数据集)。我们可以把RDD看作是火苗上的小火花,它们可以被迅速传递和处理。 接下来,我们需要用一种叫做actions的东西来把我们...

    [中文]Spark快速数据处理

    Spark是一个开源的通用并行分布式计算...如何创建和保存RDD(弹性分布式数据集),如何用Spark分布式处理数据,如何设置Shark,将Hive查询集成到你的Spark作业中来,如何测试Spark作业,以及如何提升Spark任务的性能。

Global site tag (gtag.js) - Google Analytics