Spark架构流程 以及任务的划分

 

1)将任务提交给RM,申请ApplicaitonMaster
2)RM收到请求后,分配container在合适的NM上,并启动ApplicationMaster,此时App就是Driver
3)Driver向RM申请Executor内存,RM收到请求后会分配container在合适的NM上启动Executor进程
4)Executor进程启动后会向Driver进行反向注册,Executor全部注册完后
5)Driver端运行客户端程序中的main方法
6)在main方法中构建了SparkContext对象,他是所有程序的执行入口
7)在构建SparkContext对象的内部也构建了另外的两个对象,分别是DAGScheduler和TaskScheduler
8)当触发到action算子时按照rdd的依赖关系先生成DAG有向无环图,最后把有向无环图发给DAGScheduler对象
9)DAGScheduler获得DAG有向无环图后,按照宽依赖进行stage划分,每一个stage内部有很多可以并行运行的task线程,最后把这些线程封装成一个taskset集合,把这些taskset集合发给TaskScheduler对象
10)TaskScheduler收到taskset集合后按照stage和stage之间的依赖关系,将task分配到合适的Executor中,由Executor执行task 

 1)Driver在任务提交的本地机器上运行
2)Driver启动后会和RM通讯申请启动App,RM收到请求后,分配container在合适的NM上,并启动ApplicationMaster
3)Driver向RM申请Executor内存,RM收到请求后会分配container在合适的NM上启动Executor进程
4)Executor进程启动后会向Driver进行反向注册,Executor全部注册完后
5)Driver端运行客户端程序中的main方法
6)在main方法中构建了SparkContext对象,他是所有程序的执行入口
7)在构建SparkContext对象的内部也构建了另外的两个对象,分别是DAGScheduler和TaskScheduler
8)当触发到action算子时按照rdd的依赖关系先生成DAG有向无环图,最后把有向无环图发给DAGScheduler对象
9)DAGScheduler获得DAG有向无环图后,按照宽依赖进行stage划分,每一个stage内部有很多可以并行运行的task线程,最后把这些线程封装成一个taskset集合,把这些taskset集合发给TaskScheduler对象
10)TaskScheduler收到taskset集合后按照stage和stage之间的依赖关系,将task分配到合适的Executor中,由Executor执行task

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值