spark jar包_Spark提交后都干了些什么?

最近做了一个Spark小任务,在client模式下运行没问题,但是换了cluster模式就会出现一些第三方包找不到的问题。这是由于集群只在堡垒机中放了大部分的资源和jar包,而其他的如数据节点等节点中缺少这些包,因此需要将这些jar包也动态传到数据节点。如何使项目能够获取上传到hdfs的第三方依赖,这就需要了解spark任务提交后,第三方依赖包以及spark程序、环境配置等资源都到了哪里,然后又经过了那些环节。

通过调试和总结,本文来进一步梳理spark任务提交后,这些资源jar包等都到了哪里,怎么被运行。

ce609b7e29192c4dec776548da028b45.png

上图就是Spark通过client提交后,详细的运行情况(注:部署模式为yarn-cluster模式)。如果不太了解部署模式,可以看一下上一篇文章。

spark任务提交后,主要分为三个阶段,下面来详细说明。

阶段一:准备阶段
(1)客户端首先向RM进行请求,告我RM我想要运行一个任务,你给我安排一下;
(2)RM收到请求后,同意提交的该spark任务运行,于是登记了一下,给它分配了一个applicationId编号,并在hdfs上划分了一块地方供这个任务上传一些必须的资源([hdfs:///user/用户/.sparkStaging/applicationId](hdfs:///user/用户/.sparkStaging/applicationId));
(3)客户端收到应答后,高兴的拿到自己的applicationId,然后把本地的资源上传到属于自己的hdfs空间(上传的内容有①spark所需的jar包,也就是在spark的home目录下jars下面的包;②spark的配置参数,会打成sparkconf.zip的包;③上传spark程序的jar包,就是你写的工程jar);
(4)上传资源完毕,前期准备工作就绪,准备开始向RM申请资源运行任务;

阶段二:执行阶段
(5)RM收到请求,就看了一下自己的资源队列,发现有可用的NM,于是就给该NM发请求,NM收到请求,创建容器(NM只负责对外提供Container,至于RM到底在Container中运行什么并不关心),并报告给RM容器已经创建好;
(6)RM收到应答后,告知客户端可以运行程序了
(7)client收到应答,发送运行的命令到NM的Container中,启动Application Master,接下来如何运行任务就交给Application Master来协调了
(8)Application Master首先从hdfs空间将该application之前上传的依赖包、配置文件、执行jar包下载下来,并创建Driver;
(9)Application Master向RM申请NM容器,准备启动Executor;
(10)RM调度有资源的NM创建Container
(11)Application Master在获得了NM容器后,发送指令在容器中启动Executor进程,Executor进程启动后会向Driver反向注册
(12)Driver进程会解析spark程序,执行main函数;后续一系列的DAG创建、Stage划分已经task创建都由Driver来完成
(13)由于可执行任务的Executor在Driver注册了,因此Driver会将task分配到Executor中执行

阶段三:结束阶段
(13)Executor结束
(14)Driver结束
(15)Application结束,Application Master向RM注销
(16)RM、NM继续常驻进程等待下一个任务

总结

通过这篇文章,我们应该又多了一个spark任务运行调试小技巧,就是可以去相应的hdfs目录来查看该目录下的资源、配置以及依赖包是否齐全,然后进一步分析程序运行的一些异常。

例如下面这样,我们可以发现这个application没有提交第三方jar包,只是提交了spark的配置文件。

5eac247b41ebfd46d6d91e51cdd6166e.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值