菜单
本页目录

Spark 运行模式整理

Spark 运行模式概述

Spark 在集群中可以运行的模式大致分为以下两种:

  1. 单机模式:仅依赖于单个节点进行任务调度和资源管理。
  2. 集群模式:依赖于多个节点的分布式系统,进行任务的分配和资源的调度。

部署方式

NOTE

部署方式:软件安装到什么位置

  • 单机模式
    • 如果系统仅在一个节点上运行,则为单机模式,主要用于小型测试或开发环境。
  • 分布式模式
    • 系统利用多个节点的资源来进行任务分配,常见的分布式模式包括:
      1. YARN 部署环境:资源由 Hadoop 的 YARN 提供,Spark 作为应用运行在 YARN 上,这种模式通常称为 Spark on YARN
      2. Spark Standalone 部署环境:资源由 Spark 自带的 Standalone 调度器提供,适用于较小规模的集群。
  • 云平台模式
    • Kubernetes上运行

Spark 支持的具体部署模式

  1. Local 模式

    • 该模式主要用于本地开发和测试。
    • Spark 在本地运行单个进程,不涉及集群的概念。
    • 适合小规模的作业和调试任务。
  2. Standalone 模式

    • 这是 Spark 自带的任务调度模式。
    • 由 Spark 本身提供资源调度的功能,可以将集群资源用于任务执行。
    • 在国内的生产环境中不常用,但在小型集群中可以作为独立的调度方式。
  3. YARN 模式

    • Spark 依赖 Hadoop 的 YARN 组件进行资源与任务的调度。
    • 这是国内生产环境中最常见的部署模式,广泛应用于大规模分布式系统中。
    • YARN 通过解耦合资源管理与计算,提供灵活性和可扩展性。
  4. Mesos 模式

    • Spark 使用 Mesos 平台进行资源调度和任务管理。
    • 虽然具有较高的扩展性和灵活性,但在国内的应用较为少见。
  5. 生产环境中常用部署模式

    • 在生产环境中,主要采用 YARN + Spark 的模式,这种组合也称为 Spark On YARN。YARN 作为 Hadoop 生态系统的一部分,负责资源管理,而 Spark 则专注于数据处理和计算任务。

Yarn 的历史与发展

  • Hadoop 1.x
    在早期的 Hadoop 版本中,MapReduce 计算框架和资源管理耦合在一起。资源调度和作业调度都依赖于 MapReduce 本身,这种模式在面对大规模任务时有一定的局限性。

  • Hadoop 2.x(YARN)
    从 Hadoop 2.x 版本开始,引入了 YARN(Yet Another Resource Negotiator),将资源调度和作业调度解耦合。
    YARN 成为资源管理的核心,负责调度集群资源,而不同的计算框架(如 Spark、MapReduce 等)可以运行在 YARN 上。

1. Spark框架中的角色

  • YARN 角色回顾

资源管理层

  • 集群资源管理者(Matser):ResourceManager
  • 单机资源管理者(Woker):NodeManager

任务计算层

  • 单任务管理者(Master):ApplicationMaster
  • 单任务执行者(Woker):Task(容器内计算框架的工作角色)
20240903220327.png

Yarn角色图

  • Spark 角色

资源管理层

  • 集群资源管理者(Matser):Master
  • 单机资源管理者(Woker):Woker

任务计算层

  • 单任务管理者(Master):Driver
  • 单任务执行者(Woker):Executor
20240903220327.png

Spark角色图

NOTE

正常情况下Executor是干活的角色,不过在特殊场景下(Local模式)Driver可以即是管理又是执行