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 分配任务并监控任务的执行。