Spark中Driver的功能

架构示意图

Spark中Driver的功能

[TOC]

What?

​ 用户提交的应用程序代码在spark中运行起来就是一个driver,用户提交的程序运行起来就是一个driver,他是一个一段特殊的excutor进程,这个进程除了一般excutor都具有的运行环境外,这个进程里面运行着DAGscheduler Tasksheduler Schedulerbackedn等组件。

​ 故一个 Spark 作业运行时包括一个 Driver 进程,也是作业的主进程,具有 main 函数,并且有 SparkContext 的实例,是程序的入口点。

How?

  • 创建 Spark 的上下文
  • 负责向集群申请资源,向 master 注册信息
  • 划分 RDD 并生成有向无环图(DAGScheduler)
  • 与Spark中的其他组进行协调,协调资源等等(SchedulerBackend)
  • 生成并发送 Task 到 Executor(TaskScheduler【部分功能相当于yarn中的applicationmaster】)

Where?

driver运行在哪里(在这里只讨论yarn模式)

​ 官网上说:There are two deploy modes that can be used to launch Spark application on Yarn.In cluster mode,the Spark driver run inside an application master process.And in the client mode,the driver runs in the client process.

​ 说人话就是说:在 Yarn 上可以使用两种部署模式来启动 Spark 应用程序。在集群模式下,Spark 驱动程序运行在应用程序主进程中。在客户端模式下,驱动程序运行在客户端进程中

yarn-cluster模式下,client将用户程序提交到到spark集群中就与spark集群断开联系了,此时client将不会发挥其他任何作用,仅仅负责提交。在此模式下。AMDriver是同一个东西,但官网上给的是 Driver 运行在 AM 里,可以理解为 AM 包括了 Driver 的功能就像Driver 运行在 AM 里一样,此时的 AM 既能够向 AM 申请资源并进行分配,又能完成 Driver 划分 RDD 提交 Task 等工作

yarn-client模式下,Driver运行在客户端上,先有Driver再用AM,此时Driver负责RDD生成、Task生成和分发,向AM申请资源等 ,AM负责向RM申请资源,其他的都由Driver来完成

总结

​ 用户提交的程序运行起来就是一个driver,他是一个一段特殊的excutor进程,这个进程除了一般excutor都具有的运行环境外,这个进程里面运行着DAGscheduler Tasksheduler Schedulerbackedn等组件

yarn-Cluster模式下driver运行在AM里,这个AM既完成划分RDD生成有向无环图提交task等任务也负责管理与这个application运行有关的executor

yarn-Client模式下由AM负责管理excutor其余的由driver完成

ps:Executor

​ Executor是Spark程序中的一个JVM进程,负责执行Spark作业的具体任务(task),每个任务之间彼此相互独立。Spark应用启动时,Executor同时被启动,并且伴随着Spark程序的生命周期而存在。如果有Executor节点发生了故障,程序也不会停止运行,而是将出错的Executor节点上的任务调度到其他Executor节点运行。

Executor的核心功能:

  • 运行Spark作业中具体的任务,并且将执行结果返回给Driver。
  • 通过自身的块管理器(Block Manager)对用户要求缓存的RDD进行内存式存储。RDD式缓存在Executor进程内部的,这样任务在运行时可以充分利用缓存数据加速运算。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!