spark的yarn-client模式和yarn-cluster模式的简单运行流程
Client和cluster区别:diver在集群内(cluster),还是在集群外(client)。
yarn client(集群外)
yarn-client模式(driver集群外)
1、执行main方法
2、启动driver线程,执行用户作业,创建scheduleBackend;
3、scheduleBackend向RM发送指令 (bin/java ExecutorLauncher)
4、yarn框架收到指令,在指定的NM启动ExecutorLauncher
5、AM向RM注册,申请资源;
6、获取资源后,AM向NM发送指令:(bin/java CoarseGrainedExecutorBackend)
7、进程(CoarseGrainedExecutorBackend )收到消息和driver通信,
注册已经启动的execute;然后启动计算对象execute,等待接收任务;
8、driver分配任务并监控任务的执行。
yarn cluster(集群内部)
yarn cluster(集群内部)
1、执行main方法
2、YarnClusterApplication 创建 Yarn 客户端,然后向 Yarn 服务器发送执行指令(bin/java ApplicationMaster)
3、Yarn 框架收到指令,在指定的 NM 中启动 ApplicationMaster;
4、ApplicationMaster 启动 Driver 线程,执行用户的作业;
5、AM 向 RM 注册,申请资源;
6、获取资源后,AM 向 NM 发送指令:(bin/java YarnCoarseGrainedExecutorBackend)
7、进程(CoarseGrainedExecutorBackend )收到消息和driver通信,
注册已经启动的execute;然后启动计算对象execute,等待接收任务;
8、Driver 线程继续执行完成作业的调度和任务的执行。
9、Driver 分配任务并监控任务的执行。