chapter4 批处理系统Spark

目录

Spark最初的设计目标是基于内存计算的大数据批处理系统,用于构建大型的、低延迟的数据分析应用程序。

Spark从最初仅使用内存的批处理系统,转为内外存同时使用的批处理系统,增加 Spark Streaming 支持实时流计算,Structured Streaming 支持批流融合,也提供机器学习工具包 MLlib 和图处理工具包 GraphX。因而 Spark 已形成较完整的软件栈。

本章讲述的 Spark 实际上是指 Spark Core 内容。

chapter4 批处理系统Spark

1 设计思想

1.1 MapReduce的局限性

  1. MapReduce仅提供map和reduce两个编程算子,编程框架的表达能力有限,用户编程复杂。
  2. 单个作业中,需要Shuffle的数据以阻塞方式传输,磁盘I/O开销大,延迟高。
    • 需要Shuffle的数据先由Map任务将计算结果写入本地磁盘,之后Reduce任务才能读取该计算结果。
  3. 多个作业之间衔接涉及I/O开销,应用程序的延迟高。
    • 特别是延迟计算,迭代中间结果的反复读写,使得整个应用程序的延迟非常高
  4. 资源管理和作业管理紧耦合。

1.2 数据模型

Spark 将数据抽象为弹性分布式数据集 RDD,具有3个特性:

  • Resilient:具有可恢复的容错特性
  • Distributed:每个RDD分为多个分区,不同分区存在集群不同节点,每个分区是一个数据集片段
  • Dataset:Spark 操作对象是抽象的数据集,而不是文件

1.3 计算模型

Spark提供丰富的操作算子对RDD进行变换。操作算子分为:

  1. 创建:从本地内存或外部数据源创建RDD,提供数据输入的功能。
  2. 转换 Transformation:描述RDD的转换逻辑,提供对RDD进行变换的功能。
  3. 行动 Action:标志转换结束,触发DAG生成。
    • 行动操作包含数据输出类、count、collect等操作算子
chapter4 批处理系统Spark

RDD是只读的,不可变。RDD转换/行动操作会不断生成新的RDD,而不改变原有的RDD。
—— 遵循函数式编程的特性(变量值是不可变的)

为什么这样设计?
对RDD进行并行转换操作时,RDD的不变性能简化设计,也能保证容错恢复

Spark的逻辑计算模型:Operator DAG、RDD Lineage

  • Operator DAG 描述的主体是算子,RDD Lineage 描述的主体是数据
  • RDD Lineage中,通过读入外部数据源进行RDD创建,经过一系列转换操作,每次都产生不同的RDD供下一个转换操作使用,最后一个RDD经过“行动”操作进行转换并输出到外部数据源。
chapter4 批处理系统Spark

Spark的物理计算模型

chapter4 批处理系统Spark

2 体系架构

2.1 架构图

抽象的Spark架构图,包含:集群管理器、执行器、驱动器。

  1. Cluster Manager:集群管理器,负责管理整个系统的资源,监控工作节点。
    • 根据Spark部署方式的不同,Spark可分为:
      • Standalone模式:不使用Yarn等其他资源管理系统,该模式的集群管理器包含Master、Worker
      • Yarn模式:将Spark与Yarn一起部署,该模式的集群管理器包含ResourceManager、NodeManager
  2. Executor:执行器,负责任务执行。
    • 本身是运行在工作节点上的一个进程,启动若干线程Task或线程组TaskSet执行任务
    • 在Standalone部署方式下,Executor进程名称为Coarse Grained Executor Backend
  3. Driver:驱动器,负责启动应用程序的主方法并管理作业运行。
chapter4 批处理系统Spark

⚠️MapReduce中Task是进程,Spark中Task是线程。

Spark架构实现资源管理、作业管理的分离:Cluster Manager负责集群资源管理、Driver负责作业管理。

Standalone模式下Spark的架构图(没画Driver)

chapter4 批处理系统Spark

Standalone中的Driver:

  • 逻辑上,Driver独立于主节点、从节点以及客户端
  • 但根据应用程序的不同运行方式,Driver可以不同形式存在
    • Client方式:Driver和客户端同一个进程
    • Cluster方式:系统将由某一Worker启动一个进程作为Driver(DriverWrapper)

客户端提交应用程序时可以选择Client或Cluster。

chapter4 批处理系统Spark

Spark系统

上一篇:流水线


下一篇:AFL白皮书&实现细节