第 4 章 Spark 任务调度机制
在生产环境下,Spark 集群的部署方式一般为 YARN-Cluster 模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式。
在上一章中我们讲解了 Spark YARN-Cluster 模式下的任务提交流程,但是我们并没有具体说明 Driver
的工作流程, Driver
线程主要是初始化 SparkContext
对象,准备运行所需的上下文,然后一方面保持与ApplicationMaster
的RPC
连接,通过ApplicationMaster
申请资源,另一方面根据用户业务逻辑开始调度任务,将任务下发到已有的空闲Executor
上。
当ResourceManager
向ApplicationMaster
返回Container
资源时,ApplicationMaster
就尝试在对应的Container
上启动Executor
进程,Executor
进程起来后,会向Driver
反向注册,注册成功后保持与Driver
的心跳,同时等待Driver
分发任务,当分发的任务执行完毕后,将任务状态上报给Driver
。