`

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的多个分区重新计算,代价非常高
分享到:
评论

相关推荐

    Spark RDD弹性分布式数据集

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

    Spark核心之弹性分布式数据集RDD

    1.1什么是RDD(1)RDD(ResilientDistributedDataset)弹性分布式数据集,它是Spark的基本数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。(2)具有数据流模型的特点:自动容错、位置感知性调度、可...

    spark RDD操作详解

    RDD即弹性分布式数据集,有容错机制并可以被并行操作的元素集合,具有只读、分区、容错、高效、无需物化、可以缓存、RDD依赖等特征。RDD只是数据集的抽象,分区内部并不会存储具体的数据。

    Spark快速数据处理.pdf

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

    sparkStreaming实战学习资料

    Spark中的(弹性分布式数据集)简称RDD: Spark中的Transformation操作之Value数据类型的算子: Spark中的Transformation操作之Key-Value数据类型的算子: Spark中的Action操作: Transformation->map算子: ...

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

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

    [中文]Spark快速数据处理

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

    spark介绍及分析.docx

    1. **弹性分布式数据集(RDD):** - RDD是Spark的基本抽象,代表一个不可变、可分区、可并行计算的数据集。RDD可以在集群上进行分布式计算。 2. **数据流处理:** - Spark 提供了弹性分布式数据流(DStream)...

    大数据学习笔记

    2.1 弹性分布式数据集 9 2.2 MapReduce数据分享效率低 9 2.3 MapReduce进行迭代操作 9 2.4 MapReduce进行交互操作 10 2.5 Spark RDD数据分享 10 2.6 Spark RDD 迭代操作 10 2.7 Spark RDD交互操作 10 第3章 Spark...

    Spark学习--RDD编码

    RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据分发到集群,并将操作并行化执行。 Spark中的RDD是一...

    大数据spark学习之rdd概述

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有RDD 以及...

    Spark快速数据处理

    第5章介绍如何创建和保存RDD(弹性分布式数据集)。第6章介绍如何用Spark分布式处理你的数据。第7章介绍如何设置Shark,将Hive查询集成到你的Spark作业中来。第8章介绍如何测试Spark作业。第九章介绍如何提升Spark任务...

    基于Flume&spark&Flask的分布式实时日志分析与入侵检测系统.zip

    通过学习Spark,我了解了其基本概念和核心组件,如RDD(弹性分布式数据集)、Spark SQL、Spark Streaming和MLlib等。我学会了使用Spark编写分布式的数据处理程序,并通过调优技巧提高了程序的性能。在实践过程中,我...

    Spark 编程基础(Scala 版)-机房上机实验指南

    Spark核心API:深入讲解Spark的核心API,包括RDD(弹性分布式数据集)、DataFrame、Dataset以及Spark SQL等。 数据处理与转换:通过实例演示如何使用Spark进行数据的创建、转换、操作和行动(如map、filter、reduce...

    Spark大数据处理

    3.2 弹性分布式数据集 3.2.1 RDD简介 3.2.2 RDD与分布式共享内存的异同 3.2.3 Spark的数据存储 3.3 Spark算子分类及功能 33.3.1 Value型Transformation算子 3.3.2 Key-Value型Transformation算子 3.3.3 Actions算子 ...

    2.rdd使用1

    1. RDD (弹性分布式数据集 Resilient Distributed Dataset ): Spark 中数据的核心抽象 2. 在 spark 中, R

    Spark RDD.docx

    Spark 的核心是建立在统一的抽象弹性分布式数据集(Resiliennt Distributed Datasets,RDD)之上的,这使得 Spark 的各个组件可以无缝地进行集成,能够在同一个应用程序中完成大数据处理。本文将对 RDD 的基本概念及...

    Spark快速数据处理-mini版

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

Global site tag (gtag.js) - Google Analytics