YARN Client模式
图3-2 YARN Client模式
(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程;
(2)SparkSubmit类中的main方法反射调用用户代码的main方法;
(3)启动Driver线程,执行用户的作业,并创建ScheduleBackend;
(4)YarnClientSchedulerBackend向RM发送指令:bin/java ExecutorLauncher;
(5)Yarn框架收到指令后会在指定的NM中启动ExecutorLauncher(实际上还是调用ApplicationMaster的main方法);
object ExecutorLauncher {
def main(args: Array[String]): Unit = {
ApplicationMaster.main(args)
}
}
(6)AM向RM注册,申请资源;
(7)获取资源后AM向NM发送指令:bin/java CoarseGrainedExecutorBacken;
(8)ExecutorBackend进程会接收消息,启动计算对象Executor并跟Driver通信,注册已经启动的Executor;
(9)Driver分配任务并监控任务的执行。
注意:SparkSubmit、ExecutorLauncher和CoarseGrainedExecutorBacken是独立的进程;Client和Driver是独立的线程;Executor是一个对象。
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习。
上一篇: Flink进阶之使用布隆过滤器实现UV统计
下一篇: 还在为数据同步而苦恼吗?手把手教你实现canal数据同步(三)