jar包是怎么提交到Spark上运行的
我们都知道,写好spark程序后,可以通过命令行spark-submit方式提交到集群,那么这个具体的过程是怎么搞得呢? spark有多种集群方式,如yarn,standalone等。提交方式又分为client和cluster等模式,这里就先拿standalone的client方式举例。 standalone方式下,spark集群有一个master和多个worker组成集群,现在spark又支持HA方式的热备,保障master安全,这块我们就不谈了,知道这个概念就行了。 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的信息。