• Spark 内核 (二) --------- Spark 部署模式



    Spark 支持多种集群管理器(Cluster Manager),分别为:

    • Standalone:独立模式,Spark 原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用 Standalone 可以很方便地搭建一个集群;

    • Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如 MR、Storm等。根据 Driver 在集群中的位置不同,分为 yarn client (集群外) 和 yarn cluster (集群内部)

    • Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括 Yarn。

    • K8S : 容器式部署环境。

    实际上,除了上述这些通用的集群管理器外,Spark 内部也提供了方便用户测试和学习的本地集群部署模式和 Windows 环境。由于在实际工厂环境下使用的绝大多数的集群管理器是 Hadoop YARN,因此我们关注的重点是 Hadoop YARN 模式下的 Spark 集群部署。

    一、YARN 模式运行机制

    1. YARN Cluster 模式

    1)执行脚本提交任务,实际是启动一个 SparkSubmit 的 JVM 进程;
    2)SparkSubmit 类中的 main 方法反射调用 YarnClusterApplication 的 main 方法;
    3)YarnClusterApplication 创建 Yarn 客户端,然后向 Yarn 服务器发送执行指令:bin/java ApplicationMaster
    4)Yarn 框架收到指令后会在指定的 NM 中启动 ApplicationMaster;
    5)ApplicationMaster 启动 Driver 线程,执行用户的作业;
    6) AM 向 RM 注册,申请资源;
    7) 获取资源后 AM 向 NM 发送指令:bin/java YarnCoarseGrainedExecutorBackend
    8) CoarseGrainedExecutorBackend 进程会接收消息,跟 Driver 通信,注册已经启动的 Executor;然后启动计算对象 Executor 等待接收任务
    9) Driver 线程继续执行完成作业的调度和任务的执行。
    10) Driver 分配任务并监控任务的执行。

    注意:SparkSubmit、ApplicationMaster 和 CoarseGrainedExecutorBackend 是独立的进程;Driver
    是独立的线程;Executor 和 YarnClusterApplication 是对象。
    在这里插入图片描述

    2. YARN Client 模式

    1)执行脚本提交任务,实际是启动一个 SparkSubmit 的 JVM 进程;
    2)SparkSubmit 类中的 main 方法反射调用用户代码的 main 方法;
    3)启动 Driver 线程,执行用户的作业,并创建 ScheduleBackend;
    4)YarnClientSchedulerBackend 向 RM 发送指令:bin/java ExecutorLauncher
    5)Yarn 框架收到指令后会在指定的 NM 中启动 ExecutorLauncher(实际上还是调 ApplicationMaster 的 main 方法);

    object ExecutorLauncher {
    	def main(args: Array[String]): Unit = {
    		ApplicationMaster.main(args)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6)AM 向 RM 注册,申请资源;
    7)获取资源后 AM 向 NM 发送指令:bin/java CoarseGrainedExecutorBackend
    8)CoarseGrainedExecutorBackend 进程会接收消息,跟 Driver 通信,注册已经启动的Executor;然后启动计算对象 Executor 等待接收任务
    9)Driver 分配任务并监控任务的执行;

    注意:SparkSubmit、ApplicationMaster 和 YarnCoarseGrainedExecutorBackend 是独立的进程;Executor 和 Driver 是对象。

    在这里插入图片描述

    二、Standalone 模式运行机制

    Standalone 集群有 2 个重要组成部分,分别是:

    • Master(RM):是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责;
    • Worker(NM):是一个进程,一个 Worker 运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储 RDD 的某个或某些 partition;另一个是启动其他进程和线程( Executor ),对 RDD 上的 partition 进行并行的处理和计算。

    1. Standalone Cluster 模式

    在这里插入图片描述
    在 Standalone Cluster 模式下,任务提交后,Master 会找到一个 Worker 启动 Driver。Driver 启动后向 Master 注册应用程序,Master 根据 submit 脚本的资源需求找到内部资源至少可以启动一个 Executor 的所有 Worker,然后在这些 Worker 之间分配 Executor,Worker 上的 Executor 启动后会向 Driver 反向注册,所有的 Executor 注册完成后,Driver 开始执行 main函数,之后执行到 Action 算子时,开始划分 Stage,每个 Stage 生成对应的 taskSet,之后将Task 分发到各个 Executor 上执行。

    2. Standalone Client 模式

    在这里插入图片描述
    在 Standalone Client 模式下,Driver 在任务提交的本地机器上运行。Driver 启动后向 Master 注册应用程序,Master 根据 submit 脚本的资源需求找到内部资源至少可以启动一个Executor 的所有 Worker,然后在这些 Worker 之间分配 Executor,Worker 上的 Executor 启动后会向 Driver 反向注册,所有的 Executor 注册完成后,Driver 开始执行 main 函数,之后执行到 Action 算子时,开始划分 Stage,每个 Stage 生成对应的 TaskSet,之后将 Task 分发到各个 Executor 上执行。

  • 相关阅读:
    [自学记录06|*Animation]四元数、死锁与方位插值
    [word] word 如何在文档中进行分栏排版? #媒体#其他#媒体
    牛客网经典Java面试常见题
    博客系统(页面设计)
    paddle 静态图自定义Python算子
    什么是Monkey,以及Monkey异常
    centos——记录一次开机启动设置
    设计模式(二)-创建者模式(4)-原型模式
    红米ac2100路由器刷入openwrt教程
    基于EF Core存储的国际化服务
  • 原文地址:https://blog.csdn.net/m0_51111980/article/details/126705837