spark-submit 提交源码过程研究

1,前言

网上很多别人写的都是基于spark1的版本,因为spark2的版本差异还是有点的,我打算研究一下Spark2作业的提交过程

2,spark提交方式以及参数

./bin/spark-submit\ 

--class org.apache.spark.examples.SparkPi\

--master spark://207.184.161.138:7077\

--executor-memory 20G\

--total-executor-cores100\

/path/to/examples.jar\

1000

3,main方法比较简单

defmain(args: Array[String]):Unit= {

//获取submit时候的参数,如果没有指定,获取spark-defaults.conf配置文件中的参数,还是没有就null

valappArgs =newSparkSubmitArguments(args)

appArgs.actionmatch{

caseSparkSubmitAction.SUBMIT=>submit(appArgs)

caseSparkSubmitAction.KILL=>kill(appArgs)

caseSparkSubmitAction.REQUEST_STATUS=>requestStatus(appArgs)

}

}

4,进入submit方法

private defsubmit(args: SparkSubmitArguments):Unit= {

/*对环境变量分类,分成4个tuple

*  (1) 应用的参数,

*  (2) 应用的classpath,

*  (3) 系统参数

*  (4) 通过(org.apache.spark.deploy.Client)调用APP的主类

*  */

val(childArgs,childClasspath,sysProps,childMainClass) =prepareSubmitEnvironment(args)

进入doRunMain,反射调用main方法

总结submit就是讲应用提交到master,对参数的封装,已经根据部署模式来选择相应的类来执行application,一般Standalone模式的话是org.apache.spark.deploy.Client类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容