TypechoJoeTheme

从百草味到三只松鼠

统计
登录
用户名
密码

Spark 随记

本文最后更新于2021年12月28日,已超过997天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

这篇随记是笔者粗浅的分析一下spark的源码。
使用的是 https://spark.apache.org/downloads.html 下载的源码,若想省事可直接ctrl+f 直接搜索 org.apache.spark.deploy.SparkSubmit 的 SparkSubmit 这个类。但是不能对源码进行自定义的注释之类的还是比较受限的。所以推荐还是自己下载源码使用 idea 打开 。笔者也是自己的下的源码 简单分析一下。毕竟每次提交任务时都是看着任务开始那么多的日志也不知道发生了啥~ 哈哈 部分图片是摘自网上的。侵删。

1.1 核心组件

1.1.1 Driver

Spark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。Driver在Spark作业执行时主要负责:

  1. 将用户程序转化为作业(job);
  2. 在Executor之间调度任务(task);
  3. 跟踪Executor的执行情况;
  4. 通过UI展示查询运行情况;

1.1.2 Executor

Spark Executor节点是一个JVM进程,负责在 Spark 作业中运行具体任务,任务彼此之间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。

Executor有两个核心功能:

  1. 负责运行组成Spark应用的任务,并将结果返回给驱动器进程;
  2. 它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

2. 执行流程

2.1 通用流程

Submit 提交后,在Driver 中执行2条线,一条线申请资源,注册应用程序,启动executor等,另一条线执行相关操作,

1 在资源满足后,懒执行到Action 算子后,

2 触发job,划分stage

3 创建TaskSet

4 将task 分配个指定的Executor

2.2 Yarn 底层执行流程

2.2.1 执行提交应用的命令

    --class com.atguigu.spark.WordCount \

    --master yarn \

    --deploy-mode cluster \

    WordCount.jar \

    /input \

    /output

实际在spark.class 里执行了

2.2.2 底层运行

bin/java org.apache.spark.deploy.SparkSubmit "$@"

总结:

当spark submit 时 其实就是执行一个java程序 开启进程 SparkSubmit

2.2.3 运行SparkSubmint

​ -main

​ //对参数进行封装 mainClass ==>--class脚本内设置的class==>WordCount

​ *val appArgs = new SparkSubmitArguments(args)

将 --class 也就是将执行的 class 例如:wordcount

封装成SparkSubmitArguments 的属性 mainClass

​ \>doRunMain()

​ &runMain(childArgs, childClasspath, sysProps, childMainClass, args.verbose)

​ //根据字符串类型的类全限定名获取类对象

​ ~ Class.forName(childMainClass)

​ //根据类对象获取当前类的main方法

​ ~val mainMethod = mainClass.getMethod("main")

​ //调用指定类的主方法

​ ~mainMethod.invoke(null, childArgs.toArray)

2.2.4 源码分析:

提交脚本:

bin/java org.apache.spark.deploy.SparkSubmit "$@"

//对参数进行封装 mainClass ==>--class脚本内设置的class==>WordCount

*val appArgs = new SparkSubmitArguments(args)

将 --class 也就是将执行的 class 例如:wordcount

​ *submit(appArgs)

​ //准备提交环境

​ //cluster: childMainClass = "org.apache.spark.deploy.yarn.Client"

​ //client: childMainClass = "com.dongyl.wordcount "


childMainClass 的值根据传入的client ,cluster 改变、根据childMainClass 来获取类对象。

​ \>val (childArgs, childClasspath, sysProps, childMainClass) = prepareSubmitEnvironment(args)

​ \>doRunMain()

​ &runMain(childArgs, childClasspath, sysProps, childMainClass, args.verbose)

​ //根据字符串类型的类全限定名获取类对象

​ ~ Class.forName(childMainClass)

​ //根据类对象获取当前类的main方法

​ ~val mainMethod = mainClass.getMethod("main")

​ //调用指定类的主方法

​ ~mainMethod.invoke(null, childArgs.toArray)

submit(args: SparkSubmitArguments) à
def doRunMain() à
runMain(childArgs, childClasspath, sysProps, childMainClass, args.verbose)à
/**
 * 定义一个加载器
 */
val loader 
// 通过字符串类型的类全限定名反射 获取类对象
mainClass = Utils.classForName(childMainClass)
这个childMainClass 的值 是由传入参数  client 或 cluster 决定的!
 

2.3 YARN任务流程

2.3.1 Yarn-Client工作流程:

1 启动应用程序

启动应用程序,在SparkContext启动过程中, 初始化DAGScheduler调度器,使用反射方法初始化YarnScheduler 和 YarnClientSchedulerBackend。YarnClientSchedulerBackend内部启动DriverEndpoint 和 Client。

Client向Yarn集群的ResourceManager申请启动Application Master。

2 申请资源

ResourceManager收到请求后,在集群中选一个NodeManger,为此应用申请一个Container, 并在其中启动Application Master。前面讲过,Client模式中的ApplicationMaster不运行SparkContext,只与SparkContext进行联系进行资源的派分。
SparkContext启动完毕后,与Application Master通信,向Resource Manager注册, 根据任务信息申请Container资源。

3 申请taskset

Application Master申请到资源后,与NodeManager通信

在Container中启动YarnClientSchedulerBackend,YarnClientSchedulerBackend向客户端中的SparkContext注册并申请taskset。

4 保持通信

SparkContext和运行中的任务保持通信,获取任务的状态和进度,随时掌握各个任务的运行状况,可以在任务失败时重启任务。

5 关闭

应用程序运行完成后,SparkContext向ResourceManager申请注销并关闭自己。

2.3.2 Yarn-Cluster工作流程:

Yarn-Cluster工作流程如上图所示:

1 提交应用程序

客户端启动Client项YARN集群提交应用程序。

2 初始化SparkContext

ResourceManager收到请求后,再集群中选一个NodeManger,为此应用申请一个Container, 并在其中启动Application Master。在Application Master中进行SparkContext的初始化操作

3 AM申请资源,监控任务状态

Application Master向ResourceManager注册,为各个任务申请资源,并监控任务的运行状态直到结束

4 AM拿到资源,申请并注册TaskSet

Application Master申请到资源后,与NodeManager通信,在Container中启动CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend向客户端中的SparkContext注册并申请taskset。

5 CoarseGrainedExecutorBackend 运行任务并汇报状态

CoarseGrainedExecutorBackend运行任务并向Application Master汇报运行的状态和进度.

6 SparkContext 向RM 申请注销并关闭

应用程序运行完成后,SparkContext向ResourceManager申请注销并关闭。

2.3.3 总结

Spark虽然有多种运行模式,但是其运行架构基本上由三部分组成,

  • SparkContext
  • ClusterManager(集群资源管理器)
  • Executor(任务执行进程)

SparkContext用于负责与ClusterManager通信,进行资源的申请、任务的分配和监控等,负责作业执行的全生命周期管理。
ClusterManager提供了资源的分配和管理,不同模式下角色有所不同。Standalone模式下由Master提供,Yarn模式下由ResourceManager担任。

赞(2)
评论 (2)
  1. 尼巴巴 闲逛
    Android · Google Chrome

    {!{data:image/webp;base64,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}!}

    2021-12-28 回复
  2. change 闲逛
    Windows 10 · Google Chrome

    {!{data:image/webp;base64,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}!}

    2022-02-16 回复
苏ICP备2021053031号-1