【Spark】Spark 基本概念、模块和架构

本文结构如下:

  • 基本概念
  • 基本模块
  • 基本架构

一、基本概念

  • RDD(Resilient Distributed Datasets):弹性分布式数据集,只读分区记录的集合,Spark 对所处理数据的基本抽象。RDD 是 Spark 分发数据和计算的基础抽象类。一个 RDD 是一个不可改变的分布式集合对象,因此在使用 scala 编写时,前面加修饰符 val 。Spark 中 的计算可以简单抽象为对 RDD 的创建、转换和返回操作结果的过程:
    • 创建
      通过加载外部物理存储(如HDFS)中的数据集,或 Application 中定义的对象集合(如List)来创建。RDD 在创建后不可被改变,只可以对其执行下面两种操作。
    • 转换(Transformation)
      对已有的 RDD 中的数据执行计算进行转换,而产生新的 RDD,在这个过程中有时会产生中间 RDD。Spark 对于 Transformation 采用惰性计算机制,遇到 Transformation 时并不会立即计算结果,而是要等遇到 Action 时一起执行。
    • 行动(Action)
      对已有的 RDD 中的数据执行计算产生结果,将结果返回 Driver 程序或写入到外部物理存储。在 Action 过程中同样有可能生成中间 RDD。
  • DAG(Directed Acyclic Graph):有向无环图。在图论中,边没有方向的图称为无向图,如果边有方向称为有向图。在无向图的基础上,任何顶点都无法经过若干条边回到该点,则这个图就没有环路,称为有向无环图( DAG 图)。Spark 中使用 DAG 对 RDD 的关系进行建模,描述了 RDD 的依赖关系,这种关系也被称之为 lineage。
  • Partition:分区。一个 RDD 在物理上被切分为多个 Partition,即数据分区,这些 Partition 可以分布在不同的节点上。Partition 是 Spark 计算任务的基本处理单位,决定了并行计算的粒度,而 Partition 中的每一条 Record 为基本处理对象。例如对某个 RDD 进行 map 操作,在具体执行时是由多个并行的 Task 对各自分区的每一条记录进行 map 映射。
  • NarrowDependency:窄依赖。一个父 RDD 的 partition 最多被子 RDD 中的 partition 使用一次,一父对应一子。NarrowDependency 分为 OneToOneDependency 和 RangeDependency。
  • ShuffleDependency(WideDependency):宽依赖。父 RDD 中的一个 partition 会被子 RDD 中
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值