Spark--任务执行流程

在这里插入图片描述

1、用户通过spark-submit命令提交任务
2、调用SparkSubmit初始化环境,创建SparkApplication,启动Client客户端
3、Client客户端向ResourceManager申请资源
4、ResourceManager指定一个NodeManager启动ApplicationMaster,ApplicationMaster启动diver,由yarnAllocator来分配资源,创建executorRunnable
5、executorRunnable启动nmClient,启动Container(executor)
6、executor端构建rpcEnv,与driver端建立通信,创建executor,并将executor信息发送给driver端
7、行动算子触发job,创建SparkContext,然后调用DAGScheduler
8、DAGScheduler根据shuffle依赖从后往前划分stage,将每个stage的tasks信息(包括最优先的资源位置)封装成一个taskSet,从前往后提交给TaskScheduler
9、TaskScheduler创建TaskManager来管理和监控任务的执行,然后向driver端申请重新激活资源
10、driver端进行资源画像,决定如何将task分配给可用的executor,将task信息和其资源信息封装成LunchExecutor,发送给executor端
11、executor端将LunchExecutor封装成TaskRunner
12、TaskRunner将Task序列化后,调用runTask方法,经所持有的迭代器链式计算获得计算结果
13、如果是ShuffleMapTask,就落盘成shuffle临时文件;如果是ResultTask,就写入外部存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值