Driver到底是什么?
我们写的spark程序,打成jar包,用spark-submit来提交。jar包中的一个main类,通过jvm的命令启动起来。
JVM进程,这个进程,其实就是咱们的Driver进程。
Driver进程启动起来以后,执行我们自己写的main函数,从new SparkContext()。。。
ApplicationMaster?
yarn中的核心概念,任何要在yarn上启动的作业类型(mr、spark),都必须有一个。
每种计算框架(mr、spark),如果想要在yarn上执行自己的计算应用,那么就必须自己实现和提供一个ApplicationMaster,相当于是实现了yarn提供的接口,spark自己开发的一个类
spark在yarn-client模式下,application的注册(executor的申请)和计算task的调度,是分离开来的。
standalone模式下,这两个操作都是driver负责的。
ApplicationMaster(ExecutorLauncher)负责executor的申请;driver负责job和stage的划分,以及task的创建、分配和调度
最后,driver接收到属于自己的executor进程的注册之后,就可以去进行我们写的spark作