咱们都知道,写好spark程序后,能够经过命令行spark-submit方式提交到集群,那么这个具体的过程是怎么搞得呢?安全
spark有多种集群方式,如yarn,standalone等。提交方式又分为client和cluster等模式,这里就先拿standalone的client方式举例。app
standalone方式下,spark集群有一个master和多个worker组成集群,如今spark又支持HA方式的热备,保障master安全,这块咱们就不谈了,知道这个概念就好了。spa
spark-submit classMain xx.jar -master spark://127.0.0.1:8088 ,相似这样的命令提交jar包后,spark-submit先启动要给Client程序,而后这个Client程序将spark程序(classMain)打包成DriverDescription,并放在SubmitDriver消息体内提交给Master。命令行
Master收到SubmitDriver消息后,根据消息里的参数DriverDescription建立好Driver,并等待调度。调度是schedule()方法触发的。这时候Master会找到一台Worker。而且给这台Worker发送LaunchDriver命令,LaunchDriver命令里带的参数就包括这个Driver的信息。ip
而后就是Worker的过程了,这时候这台Worker其实就是咱们的spark程序的Driver所在的机器。这时候Worker会执行DriverRunnber,跑的就是咱们的spark程序。it
最后还有个小疑问?DriverRunner里是否是执行的是DriverWrapper呢?这点笔者还没彻底搞明白哦。spark