Spark源码

Spark版本:2.1.x
Spark有许多模式,比如standlone 这里分析Spark on yarn 的部署流程。在这种模式中有几个重要的角色我们列出来。Driver、Executor、AM、NM、RM等,我们将在源码中将这几个组件串联起来,分析在Spark on yarn下这几个组件是如何工作的。

入口

spark-submit 中调用的类为 org.apache.spark.deploy.SparkSubmit 具体分析过程不赘述。
所以我们直接从SparkSubmit 分析,后续的逻辑。

1

% org.apache.spark.deploy.SparkSubmit
%% main
%%% SparkSubmitArguments(args)

进入main方法SparkSubmitArguments(args)进行参数准备,这是一个class对象,当我们使用new SparkSubmitArguments(args)的时候,其中的所有的代码从上至下依次执行。
%% submit(appArgs)
%%% prepareSubmitEnvironment(args)

在这个方法中,返回了方法参数,其中 mainClass代表的参数是org.apache.spark.deploy.yarn.Client
%%% Runmain()
此方法中以开启线程的方式,反射调用了org.apache.spark.deploy.yarn.Client中的main方法
如果我们这么总结的话,SparkSubmit主要职责就是判断、准备我们在客户端提交的参数,如果是spark on yarn 那么会调用 org.apache.spark.deploy.yarn.Client的main方法,这个赋值是可以找到的。
还有一个点,其使用了ClassLoader去加载了jars,他的目的是加载我们指定的依赖到内存当中,否则jvm是不会把我们想要的依赖给自动载入的。

2

% org.apache.spark.deploy.yarn.Client
这个类在spark的源码中是没有的,是因为我们在本地idea开发的时候,并没有使用到它,但是在生产环境中是有的。
%% main
%%% new Clinet.run()
%%%% YarnClient.createYarnClient
此方法中创建了YarnClient用于提交任务,其中拿到了RM的引用(地址、端口等)
%%%%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值