1.客户端client向ResourceManager提交Application,ResourceManager接受Application并根据集群资源使用情况选择一台node启动Application任务调度器driver
2.ResourceManager找到那个node,令该node上的nodeManager启动一个新的JVM进程运行程序的driver(ApplicationMaster)部分,dirver(Application)启动时会先向ResourceManager注册,说明由自己来负责当前程序的运行。
3.driver(ApplicationMaster)开始下载相关jar包等各种资源,基于下载的jar等信息决定向ResourceManager申请具体资源内容。
4.ResourceManager接受到driver(ApplicationMaster)提出的申请后,会最大化的满足。
5.driver(ApplicationMaster)收到发过来的资源元数据信息后会根据元数据信息发指令给具体机器上的NodeManager,让其启动具体的container。
6.NodeManager收到driver发来的指令,启动container,container启动后必须向driver(ApplicationMaster)注册。
7.driver(ApplicationMaster)收到container的注册,开始进行任务的调度和计算,知道任务完成
注意:
如果ResourceManager第一次没有能够满足driver(ApplicationMaster)的资源请求,后续发现有空闲资源,会主动向
driver(ApplicationMaster)发送可用资源的元数据信息以提供更多的资源用于当前程序的运行。