题目:
简述Spark的架构与作业提交流程(画图讲解,注明各个部分的作用)(重点)
答案:
(1)脚本启动执行并提交任务,实际是启动一个SparkSubmit的JVM进程
(2)SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法
(3)YarnClusterApplication创建Yarn客户端,然后向Yarn服务器发送执行指令:bin/java ApplicationMaster
(4)Yarn框架收到指令后会在指定的NM中启动ApplicationMaster
(5)ApplicationMaster启动Driver线程,执行用户的作业
(6)AM向RM注册,申请资源
(7)获取资源后AM向RM发送指令:bin/java YarnCoarseGrainedExecutorBackend
(8)CoarseGrainedExecutorBackend进程会接收消息,跟Driver通信,注册已经启动的Executor,然后启动计算对象Executor等待接收任务
(9)Driver线程继续执行完成作业的调度和任务的执行
(10)Driver分配任务并监控任务的执行