一、driver 运行在集群中(yarn-cluster模式)
1、client 向 yarn 提交一个job
2、ResouceManager 为该job在某个 NodeManager 上分配一个 ApplicationMaster,NodeManager启动ApplicationMaster,ApplicationMaster启动 driver(sparkContext)(cluster 模式下,driver 包含在 appMaster 里)
3、ApplicationMaster 启动后完成初始化作业,driver 生成 DAG ,DAG scheduler 将DAG 拆分成 stage (TaskSet)发送给 Task Scheduler
4、ApplicationMaster向 RM 申请资源,ResouceManager 返回 Executor信息
5、ApplicationMaster根据返回的资源信息在,通过 rpc 在对应的nodemanager启动相应的 Executor
6、Excutor 启动后 向 driver 进行注册并申请 task,driver 端的 TaskScheduler 将 task 发送给 Excutor
7、Executor 执行task ,执行结果写入外部或返回 driver 端
二、driver运行在client端(yarn-client)
1、启动后直接运行应用程序,启动 driver,并初始化
2、client 向 yarn 提交job
3、RM 为该job 在某个 NM 分配一个 AM
4、AM 向 RM 申请资源,RM 返回Executor 信息
5、AM 通过 RPC 启动相应的 Executor
6、driver 生成DAG 图,DAG scheduler 将DAG 拆分成 stage (TaskSet)发送给 Task Scheduler
7、excutor 向 driver 注册 ,并向 Driver 申请 task,task scheduler 发送 task 给execitor
8、Executor 执行task 并将结果写入第三方存储系统或者 Driver 端
spark on yarn 运行流程
于 2018-08-05 17:15:53 首次发布