Spark on Yarn模式下执行过程

SparkonYARN模式下,用户提交的SparkApplication启动ApplicationMaster(即DriverApplication),向ResourceManager请求资源,然后启动Executor进程执行任务。Executor通过YarnCoarseGrainedExecutorBackend与Driver通信,报告任务状态,直到所有任务完成,释放资源并关闭进程。
摘要由CSDN通过智能技术生成

在Spark on YARN模式下,整个执行过程步骤:

Driver Application启动

Driver Application启动:用户提交的Spark Application在YARN上启动一个ApplicationMaster(即Driver Application)进程来管理整个应用程序的生命周期,并向ResourceManager请求资源。

获得资源

Driver Application向ResourceManager请求可用的资源(CPU核数、内存等),并等待接收到资源的响应。

启动Executor Container

一旦Driver Application获得了足够的资源,它会将这些资源划分为多个容器(Containers),每个容器都是一个独立的YARN任务,负责运行一个Spark Executor进程。然后,Driver Application会将每个容器的启动命令发送给NodeManager,让其启动容器。

Executor进程启动

NodeManager接收到Driver Application发送的启动命令后,会启动Executor容器进程,并将Executor启动命令传递给该进程。此时,Executor进程会调用YarnCoarseGrainedExecutorBackend的onStart()方法,初始化ExecutorBackend,并启动ActorSystem和Actor。

Executor注册

在Executor容器进程启动后,Executor会向Driver Application报告其注册信息,包括Executor ID、主机名、端口号等。Driver Application会记录每个Executor的信息,并将任务分配给它们。

接收任务

Driver Application向Executor发送需要执行的Spark任务,每个任务都是一个RDD上的操作序列。

任务执行

Executor收到任务后,在自己的线程池中执行,通过调用RDD的一些计算方法来计算数据并将结果返回给Driver Application。

报告状态

在任务运行期间,Executor会定期向Driver Application报告当前的状态,例如已完成的任务数、失败的任务数等。

完成任务

当一个Executor完成所有分配给它的任务后,它会向Driver Application发送完成消息,并终止自身进程。

应用程序完成

当所有的Executor都完成了任务,Driver Application会向ResourceManager释放其占用的资源,并关闭自身进程。

Spark on YARN模式下YarnCoarseGrainedExecutorBackend的Executor backend

它负责启动和管理运行在YARN上的Spark Executor进程,并与Driver进程进行通信以接收任务并报告状态。

YarnCoarseGrainedExecutorBackend实现了CoarseGrainedExecutorBackend特质,该特质定义了Executor backend必须实现的方法。其中最重要的方法是onStart(),该方法在Executor进程启动时调用并初始化ExecutorBackend。在onStart()方法中,YarnCoarseGrainedExecutorBackend会创建一个Akka ActorSystem并启动一个Actor来处理从Driver进程发送的任务和命令。Executor进程还会向ResourceManager请求资源,并在获取资源后启动Executor容器进程。

在YarnCoarseGrainedExecutorBackend中,有几个关键类需要注意:

  • YarnAllocator:负责向ResourceManager请求资源并为Executor分配资源;

  • CoarseGrainedExecutorBackendActor:具体的Actor实现,用于处理从Driver进程发送来的消息和命令;

  • YarnContainerLauncher:负责启动和监视Executor容器进程的生命周期;

  • YarnCoarseGrainedExecutorBackendUtils:包含一些常见方法,例如解析Executor参数、设置环境变量等。

总体来说,YarnCoarseGrainedExecutorBackend的工作流程如下:

  • 调用onStart()方法初始化ExecutorBackend,并启动ActorSystem和Actor。

  • 向ResourceManager请求资源并启动Executor容器进程。

  • Executor容器进程启动后,向Driver进程报告Executor的注册信息。

  • 接收从Driver进程发送来的任务和命令,并在Actor中处理。

  • 在任务运行期间定期向Driver进程汇报当前的状态,例如已完成的任务数、失败的任务数等。

  • 当所有任务完成时,向Driver进程发送消息并终止Executor进程。

需要注意的是,YarnCoarseGrainedExecutorBackend的实现相对复杂,需要深入理解Spark和YARN的相关知识才能全面理解其源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P("Struggler") ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值