SparkSubmit进程执行过程

SparkSubmit进程执行过程


sparksubmit 类main方法中首先讲args封装到了SaprkSubmitArguments 当中。进行参数的初始化。
封装的返回对象appArgs对进行匹配,如果匹配得到的是sunmit那么进行提交作业的操作,如果匹配到的是kill,结束appArgs对应的进程,如果匹配到的是request_status,返回状态信息。
对于匹配到的是submit提交作业的时候,在submit方法中,
首先拿到远端的远程单例对象,只有拿到远程单例对象,才能拿到远程对象的方法。

val proxyUser = UserGroupInformation.createProxyUser(args.proxyUser,UserGroupInformation.getCurrentUser())

然后执行runMain方法,在runMain方法中,首先初始化了入口类

var mainClass: Class[_] = null

然后通过反射获取到入口类

mainClass = Utils.classForName(childMainClass)

拿到入口方法,这里的main方法的名字必须要是"main"因为在获取去入口方法中把这个方法的名字固定成了"main"

val mainMethod = mainClass.getMethod("main", new Array[String](0).getClass)

通过mainMethod调用invoke对main方法进行托管执行。

mainMethod.invoke(null, childArgs.toArray)

接下来就是初始化一些需要的环境,如SparkConf、SparkContext等,然后生成相应的RDD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值