Spark基础概念 | 青训营笔记

102 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第七天。

架构

image.png

  • Spark Core 基本功能如任务调度、错误恢复、内存管理和与存储系统交互等 ,RDD的API定义
  • Spark SQL 用于操作结构化数据,支持多种数据源
  • Spark Stream 进行流式计算
  • MLib 提供常见机器学习功能的程序库,常见的机器学习算法
  • GraphX 图计算、图算法等
  • 集群管理器

Spark应用

Spark Architecture
  • driver program,负责代码的实际运行,将用户代码转化为job,在executor间进行任务调度
  • SparkContext代表和计算集群的一个连接,可以通过它创建RDD
  • master,资源调度、集群监视
  • worker用master分配的数据进行并行处理和计算
  • executor,worker node上的一个进程,执行计算任务并返回结果

Spark程序主要内容:

  1. 创建输入RDD
  2. 使用filter等transform操作产生新的RDD
  3. 对需要重复使用的RDD使用persist()进行持久化
  4. 使用count()等action操作触发并行计算

RDD

Spark中的RDD(resilient distributed dataset,弹性分布式数据集)就是一个不可变的分布式对象集合。

RDD被划分为多个分区(partition),可以运行在不同的节点上

RDD的创建

  1. 读取外部数据集
  2. 在Driver Program中对集合并行化,使用parallelize()方法

RDD算子

两类

  • transform如map、filter,返回新的RDD
  • action如first、count触发job提交

RDD依赖

image.png

窄依赖

父RDD的每个partition至多对应一个子RDD分区。

NarrowDependency

OneToOneDependency

RangeDependency

PruneDependency

宽依赖

父RDD的每个partition可能对应多个子RDD分区。

ShuffleDependency

Spark通过谱系图(lineage graph)记录RDD间的依赖关系,也可用于数据恢复

graph LR
用户程序 --> 物理执行单元task-->逻辑计划DAG-->物理执行计划
逻辑计划-->一系列stage