Spark源码分析(二)—Spark提交任务流程及运行流程(spark-submit)


Spark提交任务流程(调用Spark-submit脚本)

Spark提交任务常用参数

  上一篇介绍了Spark集群启动流程的源码的分析,集群启动后,接下来就是提交任务运行了。这篇将结合源码对Spark任务提交流程以及任务运行流程进行分析。
  Spark提交任务,是通过调用spark-submit脚本来进行任务提交的,同时在任务提交的时候还可以指定一些参数,如设置本地模式、集群模式、指定每个executor大小或者所有executor总共的运行的核的数量等。关于Spark任务提交的常用参数和参数的相关说明如下表格。
  

参数名
参数说明
- -mastermaster 的地址,提交任务到哪里执行, 有三种模式,集群模式:spark://host:port,yarn模式: yarn, 本地模式: local[2]可指定线程数
- -executor-memory每个 executor 的内存,默认是1G,可以自己指定
- -total-executor-cores所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
- -num-executors启动的 executor 数量。默认为2。在 yarn 下使用
- -executor-core每个 executor 的核数。在yarn或者standalone下使用
- -class应用程序的主类,仅针对 java 或 scala 应用
- -name应用程序的名称
- -jars用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
–driver-class-path传给 driver 的额外的类路径
- -exclude-packages为了避免冲突 而指定不包含的 package

Spark提交任务总流程

  在上一步我们已经说了提交任务涉及到的一些具体参数和参数的说明。那么在提交任务之后任务究竟是怎么执行呢?接下来我们就来看看任务提交的基本流程,任务提交的流程如下图。

流程描述

  1、Driver端向Master提交注册任务。
  2、Master接收到Driver发送过来的信息后,把信息封装成真正的任务信息,并把任务信息进行保存。
  3、Master通知Worker拿取任务信息,同时通知Worker启动Executor。
  4、Worker向Master拿取任务,同时启动Executor。
  5、Executor开始向Driver进行反向注册。
  6、Driver端开始发送任务。

任务运行流程

  运行spark-submit脚本时实际上是调用了SparkSubmit类中的方法,通过SparkSubmit中的方法来实现任务的运行。

  1.调用SparkSubmit中的main方法。

  2.接收任务参数,将参数封装到SparkSubmitArguments中。

  3.遍历封装在SparkSubmitArguments中的参数,与SparkSubmitAction(枚举类)中的参数进行匹配,如果匹配到是SparkSubmitAction.SUBMIT,调用submit(appArgs)方法进行提交;如果匹配到的参数是SparkSubmitAction.KILL,就调用kill(appArgs);如果是SparkSubmitAction.REQUEST_STATUS,就调用requestStatus(appArgs)获得请求状态。
    以匹配到submit为例
    3.1 拿到远程代理对象。(通过代理对象可以找到运行的主类)

    3.2 调用run方法,通过拿到的代理对象,再调用run方法里的runMain方法找到要执行的类的main方法。

    runMain

      1)通过类的反射拿到入口类。

      2)通过getMethod拿到要执行的类的main方法。

    3)再通过invoke方法,开始执行任务重的程序的main方法。
  至此,提交的要被执行类就正常被执行了,这就是任务运行运行的整个流程。




第一篇:Spark源码分析(一)—Spark集群启动流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值