跳到主要内容

简述Spark client提交application后,接下来的流程 ?

参考答案:

当Spark client提交application后,接下来的流程大致如下:

  1. 客户端(Client)向ResourceManager(RS)提交Application。ResourceManager接受Application,并根据集群的资源状况选取一个节点(Node)来启动Application的任务调度器driver(也称为ApplicationMaster)。
  2. ResourceManager找到该节点后,命令该节点上的NodeManager启动一个新的JVM进程以运行程序的driver(ApplicationMaster)部分。当driver(ApplicationMaster)启动时,它会首先向ResourceManager注册,表明自己将负责当前程序的运行。
  3. driver(ApplicationMaster)开始下载相关的jar包等资源,并根据下载的jar等信息决定向ResourceManager申请具体的资源内容。
  4. 一旦资源申请成功,driver(ApplicationMaster)会开始初始化Executor进程。Executor进程是实际执行任务的进程,它们会在集群的Worker节点上启动。当Executor启动成功后,它们会向driver(ApplicationMaster)进行反向注册,表示已经准备好接收和执行任务。
  5. driver(ApplicationMaster)接收到Executor的反向注册后,开始将任务(Task)分配给Executor执行。它会监控任务的执行状态,并回收Executor执行的结果。
  6. 所有任务完成后,SparkContext会向Master注销,并释放资源。如果在执行过程中任务失败,TaskScheduler会负责重试,将任务重新发送给Executor执行,默认重试次数为3次。

整个流程中,ResourceManager负责资源的调度和管理,driver(ApplicationMaster)负责任务的调度和监控,而Executor负责任务的执行。这样,Spark client提交的Application就能有效地在集群中运行并完成任务。