Spark内部流程

 一.standalone client模式

  • 1.启动master,和worker ,然后worker向master建立连接,然后把计算机资源汇报给master,然后master保存这些注册信息,然后向worker返回注册成功的信息
  • 2.然后worker向master发送心跳,目的是向master报活,
  • 3.这时候启动客户端,客户端会提交任务,在提交任务的时候,会指定自身需要多少资源,比如说需要多少内存核,通过底层rcp,与master建立起通信,
  • 4.这时候master知道要有任务要提交了,这时候给master先对worker进行一次筛选,看哪些worker需要有足够多的资源,然后master跟哪些有足够多资源的worker进行通信,worker开始启动executor,executor启动起来后,向客户端进行反向注册,
  • 5.这时候,driver就跟这些executor建立起连接,
  • 6.客户端执行程序,根据有多少个分区,生成有多少个Task,而且task分阶段先后调度到executor里面执行所以整个过程真正处理数据的是,worker里面的executor

 

 

 

 

二.standalon cluster模式

 

  • 与client模式本质区别是,他的driver运行在集群里面,
  • 客户端通过SparkSubmit 向master申请资源,master会先在集群里面启动一个容器,容向注册,
  • driver产生多个task,分不同调度task到executor,注意task里面是动态生成的

 

三.Spark on YARN cluster 模式

 

  • 1.首先有一个客户端,client,向ResourceManager 申请资源
  • 2.ResourceManager返回一个任务的id,客户端把id,配置信息,jar包,上传到hdfs中,
  • 3.ResourceManager 会跟其中的一个nodamanager进行通信,让nodamanager启动一个z最初的管理容器AppMaster,
  • 4.在AppMaster里面起Driver,Driver会跟ResourceManager进行通信,向他申请容器,ResourceManager会把这个容器的信息传给AppMaster,AppMaster拿到容器信息,会跟对应的NodeManager进行通信,NodeManager启动子进程,子进程叫做YarnClusterEntryPoint,
  • 这些YARN启动进程之后呢,会想Driver进行反向注册,Driver执行一些逻辑程序形成多个Task,然后把这些Task调度到Executor里面,

 

四.Spark任务的流程执行简介

 

 

  1. Job:RDD每一个行动操作都会生成一个或者多个调度阶段 调度阶段(Stage):每个Job都会根据依赖关系,以Shuffle过程作为划分,分为Shuffle Map Stage和Result Stage。每个Stage对应一个TaskSet,一个Task中包含多Task,TaskSet的数量与该阶段最后一个RDD的分区数相同。 
  2. Task:分发到Executor上的工作任务,是Spark的最小执行单元 
  3. DAGScheduler:DAGScheduler是将DAG根据宽依赖将切分Stage,负责划分调度阶段并Stage转成TaskSet提交给TaskScheduler
  4. TaskScheduler:TaskScheduler是将Task调度到Worker下的Exexcutor进程,然后丢入到Executor的线程池的中进行执行 

 

 

 

spark的运行流程

1.客户端中的sparkSubmit向 向Master中请求任务,

2.master启动之后,调用多个worker,并向多个worker发送指令,

3.worker收到master的指令之后,就启动executor,

4.executor向driver端建立连接,表名可以运行,

这里master的作用就是,管理集群中的worker,接收任务请求,并向worker发送任务

worker,启动之后,并向master,注册,master返回注册信息之后,worker启动定时任务之后,定时报活

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页