`
bit1129
  • 浏览: 1069615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Spark三十五】Standalone集群+Client部署模式下用户提交任务的执行流程

 
阅读更多

通过spark-sumbit提交Standalone集群+Clientr部署模式下的程序的流程

 

spark-submit提交程序

  • SparkSubmit相应提交程序请求
  • 由于是standalone集群+部署模式(deployMode)是client的方式,因此逻辑执行到在SparkSubmit的main方法里通过反射构造应用的class的main函数
  • 程序执行到程序的main函数中
  • 创建SparkContext对象

           1. 创建private[spark] var (schedulerBackend, taskScheduler) =   SparkContext.createTaskScheduler(this, master)

           2. 创建 dagScheduler = new DAGScheduler(this)

 

  • 在createTaskScheduler方法中,创建SparkDeploySchedulerBackend对象,SparkDeploySchedulerBackend继承自SparkDeploySchedulerBackend
  • 在SparkContext的构造方法中,调用TaskScheduler的start方法,在start方法内部调用SparkDeploySchedulerBackend的start方法
  • 在SparkDeploySchedulerBackend的start方法中,构造AppClient对象,并调用AppClient的start方法
  • 在AppClient中,执行preStart方法以调用registerWithMaster()方法,将Driver注册给Master。注册的动作实际上是AppClient给Master发送RegisterApplication消息,
  • 在Master的RegisterApplication消息处理中,调用Master的schedule方法(注意资源调度策略)
  • 在Master的schedule方法中调用launchExecutor方法
  • 在Master的launchExecutor方法中,给Worker发送LaunchExecutor消息
  • 在Workder的LaunchExecutor消息处理器中,创建ExecutorRunner对象,而ExecutorRunner则通过反射的方式创建一个Java进程,这个进程就是启动一个CoarseGrainedExecutorBackend进程
  • CoarseGrainedExecutorBackend是一个Actor,首先运行它的preStart方法,在它的preStart方法中,给Driver发送RegisterExecutor消息
  • 此处的Driver是在CoarseGrainedSchedulerBackend中定义的,当它收到RegisterExecutor时,调用CoarseGrainedSchedulerBackend的makeOffers方法
  • 在makeOffers中,调用launchTasks方法启动任务
  • 在launchTasks中,循环提交所有的Task(这本来是一个TaskSet任务集),每次循环给CoarseGrainedExecutorBackend发送LaunchTask消息
  • CoarseGrainedExecutorBackend处理LaunchTask时,调用Executor的launchTask方法
  • 在Executor的launchTask方法中,提交给Executor中的线程池执行

可见,standalone+client的方式,相对于standalone+cluster的方式,省略了如下三个步骤

  • ClientActor给Master发送RequestSubmitDriver消息
  • Master给Worker发送LaunchDriver的消息
  • Worker创建并启动Driver进程

如下图所示,第二步动作是在AppClient的preStart的registerWithMaster()方法中给Master发送的RegisterApplication消息。所以,Driver实际上并未向Master注册,而是发送了RegisterApplication消息。

 

 

 

  • 大小: 31.1 KB
分享到:
评论

相关推荐

    spark 分布式集群搭建

    Spark Standalone 是 Apache Spark 提供的一种自带的集群管理模式,主要用于管理 Spark 应用程序的执行环境。这种模式简单易用,适合于开发测试以及中小型生产环境。 #### Spark Standalone 部署配置 ##### ...

    spark集群部署.docx

    Spark在YARN模式下有两种提交模式:YARN Client和YARN Cluster。前者中,Driver运行在提交应用程序的工作站上,而后者中,Driver运行在Application Master进程中,由YARN管理。 在具体部署Spark集群的过程中,首先...

    spark基础,关于spark的安装和几种模式的部署

    在规划Spark Standalone集群时,需要在每台机器上安装Spark,并配置Master和Worker的相关参数。例如,可以将Master节点设置为node01,两个Slave节点为node02和node03。安装步骤包括将Spark安装包上传至服务器,解压...

    【Spark内核篇02】Spark模式运行机制1

    在Spark内核篇02中,我们主要讨论了Spark在三种不同模式下的运行机制:Yarn模式、Yarn-Client模式和Standalone模式,包括这两种运行模式下的Cluster和Client模式。 首先,我们来看Yarn模式的运行流程: 1. 用户通过...

    spark初始化源码阅读sparkonyarn的client和cluster区别

    Client 是 Spark 的入口点,负责提交任务到集群上。Client 的主要组件有 SparkContext、DriverActor 和 ClientActor。 SparkContext 是 Spark 的上下文对象,负责准备任务的执行环境。SparkContext 的主要工作包括...

    Spark简介以及其生态圈

    在不同集群中的运行演示部分,通常会展示如何在Standalone和YARN模式下启动Spark-Shell,如何提交Spark应用程序,并通过具体案例来分析运行结果。同时,在问题解决部分,会针对可能遇到的问题,如YARN-CLIENT启动...

    Spark原理及源码剖析1

    本文将深入探讨Spark的原理及源码分析,首先从Spark运行时的通用流程入手,然后介绍核心组件的角色与职责,以及Spark支持的不同集群部署模式。 在Spark的运行流程中,用户通过`spark-submit`提交应用程序。这个过程...

    04_尚硅谷大数据技术之Spark内核1

    YARN模式下,Spark运行机制分为client和cluster模式,其中client模式中Driver运行在客户端,而cluster模式中Driver运行在集群内部。 理解Spark内核和部署模式对于优化Spark应用性能和解决运行中遇到的问题具有重要...

    Spark内核解析.docx

    - Standalone:Spark自带的简单集群管理器,适合独立部署; - Apache Mesos:分布式资源管理框架,支持多种计算框架; - Hadoop YARN:统一资源管理,支持mapreduce、storm等多种计算框架,有yarn client和yarn ...

    Spark部署中的关键问题解决之道--许鹏.pdf

    在部署Spark Standalone集群时,需要考虑集群的组成和任务调度机制。典型的集群由Driver/Client、Master和Worker组成。Master负责资源分配和任务调度,而Worker负责执行实际的任务。集群中的每个Worker节点可以有多...

    Apache Spark常见面试题

    - **特点**:在Standalone模式下,Spark应用可以独立部署在一个集群中,通过ZooKeeper解决了单点故障问题。Standalone模式下的资源管理较为简单,每个Worker节点上的资源被抽象成若干个slot,根据任务需求进行分配...

    spark最新集群搭建指南2017

    - **Client模式**:应用在客户端(提交任务的机器)上运行,Spark Master仅负责调度,应用结果在客户端的控制台可见。 4. **高可用性(HA)配置**:通过ZooKeeper实现Spark Master的高可用。在`spark-env.sh`中...

    大数据组件 Spark 面试题 + Spark 高频面试题

    - Spark架构包括Driver、Executor和Scheduler等组件,作业提交流程涉及Driver向资源管理器(如YARN的ResourceManager)申请资源,启动Executor,然后Executor执行任务。 - 在YARN的client模式下,Driver运行在...

    spark submit 0704峰会.zip

    3. `--deploy-mode`: 指定部署模式,可选 `client`(客户端模式)或 `cluster`(集群模式)。客户端模式下,驱动程序在提交任务的机器上运行;而在集群模式下,驱动程序在集群内部运行。 4. `--jars`: 添加额外的 ...

    Spark开发指南.pdf

    当需要从集群外部提交 Spark 任务时,需要进行特定的配置和操作: 1. **环境配置**: - 需要在集群内部为提交任务的用户设置相应的权限。 - 创建用户根目录 `/user/[username]`,确保用户有权对该目录进行操作。 ...

    Hive on Spark安装配置详解.pdf

    在Spark on YARN模式下,又分为Cluster和Client两种部署模式。Cluster模式下,Driver程序在ResourceManager上运行,而Client模式下,Driver在提交应用程序的客户端上运行。 接下来,我们将按照以下步骤进行配置: ...

    Spark介绍.docx

    在提交任务时,可以选择client或cluster模式,client模式下,驱动程序运行在提交任务的工作站上,而cluster模式下,驱动程序由集群管理器在集群内部启动,这样可以减轻客户端的负担。 Spark支持多种编程语言,包括...

    巴豆大数据团队讲师课件Spark.pdf

    文档提供了本地模式和集群模式的启动方法,如使用start-all.sh脚本启动所有组件,以及使用run-example命令验证Spark的计算能力,包括本地模式和在不同集群模式下的测试。 在Spark的配置与优化方面,文档详细介绍了...

    spark-submit工具参数说明.pdf

    `spark-submit`是Apache Spark的核心组件之一,用于提交Spark应用程序到集群进行执行。它是一个命令行工具,提供了丰富的参数选项来定制应用的运行环境。以下是对`spark-submit`工具主要参数的详细说明: 1. **--...

Global site tag (gtag.js) - Google Analytics