在客户端执行脚本sbin/spark-submit的时候,通过cat命令查看源码可以看出,实际上在源码中将会执行bin/spark-class org.apache.spark.deploy.SparkSubmit 。
在IDEA导入的Spark-Core的源码进行分析。
首先Spark会把初始化的参数使用SparkSubmitArguments进行封装,之后对SparkSubmitAction类型进行模式匹配,一共有三种:1.SUBMIT 2. KILL 3. REQUEST_STATUS。
其中,SUBMIT就是匹配到用于怎么提交任务的方法submit(),提交任务都要先进行反序列化,所以submit()方法会先获取到反向代理,之后开启线程,解析到入口类的main方法并执行。
runMain()中,通过传入的远程代理对象,拿到入口类mainClass,获取main方法,并通过invoke()执行
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9139.html