Spark任务提交后是如何完成提交过程的?源码解析!

本文详细解析了Spark任务提交的全过程,从spark-submit命令到SparkSubmit类的main方法,再到ClientApp类的start()方法,直至ClientEndPoint类的请求注册driver,揭示了Spark任务提交的核心机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark任务提交后是如何完成提交过程的?源码解析!

我们熟知的提交命令:

spark­submit ­v ­­class xxx  ­­master spark://xxx7077 ....

然后我们vi spark­submit.

看到他实际上启动的是SparkSubmit的类。

然后我们来到源码中找到SparkSubmit,进行分析。

刚进入类中,你就会发现:

我们说spark的四种运行模式,就是他们。

既然SparkSubmit能运行任务,那么他应该能启动一个属于自己的进程,也就是说他会有自己的mian方法。

果不其然:

在对象SparkSubmit中有个main方法,实例化一个SparkSubmitArguments类,调用该类的Submit方法。

在submit中首先引用了prepareSubmitEnvironment方法,见名知意,准备提交的环境,点进去:

在submit()方法中先调用了prepareSubmitEnvironment()方法,再调用了dorunMain()方法。

看你选择那种运行环境,

【注】后面代码还有各种信息,这里没有全部截出来。自行查阅

然后回到submit方法,点击runMain,进入runmain方法,往下找

你会发现我们常说的App

点击SparkApplication 

接下来,找一下SparkApplication的实现类ClientApp类。当调用app.start()时,实际上调用的是ClientApp的start()方法。
在start()方法中,有个很重要的类ClientEndPoint。这个类是用于把消息发送给Driver的代理,很重要。跟踪进去。

ClientEndpoint类

先实例化一个Command类,再实例化一个DriverDescription类。最后提交请求给master,请求注册driver。【ClientEndpoint类】

至此:spark的submit过程算是结束了


总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值