Spark任务调度

这里写图片描述

RDD Objects:
两个RDD合并后分组、过滤
DAGScheduler:
将程序生成DAG图,并切割stage、划分Task(初始partition数量),将一个stage的task封装到一个taskset,并发送至TaskScheduler
TaskScheduler
这个类会向Cluster manager(Yarn)请求资源,获取到资源后,会将TaskSet打散送至申请到的Worker Node中的Executor中执行。为每一个TaskSet维护一个TaskSetManager(追踪本地性及错误信息)
Worker
Threads是Executor里的线程池,Block manager是管理数据的,会在Threads中找一个Thread去执行Task。
最终的计算出来的数据的存储处理都是在Worker Node 中进行的
Tips
1、Worker只关注Task,不关注Stage的成功与否
2、TaskScheduler只关注Stage,不关心Job成功与否
3、Worker中的Task执行失败后会通知TaskScheduler,后者会重新调度Task执行,重试n次之后仍旧失败的话,TaskScheduler会通知DAGScheduler,后者会重新调度Stage执行,重试n次之后仍旧失败,那么当前所执行的Job就失败了。
4、straggling tasks:这种情况是指,比如我们执行一个任务到了百分之90+,后一直卡着不动,这事,停掉可惜,不停浪费时间,即为一种挣扎的状态。straggle任务需要放到别的节点上重试
5、DAGScheduler基于Stage构建DAG,决定每个任务的最佳位置
6、TaskScheduler为什么不直接把Task送至Thread中执行,而是先送到Executor?
因为Executor是一个进程,会有一个接口,所以,只能送到该端口的进程中。无法直接和线程沟通
7、一个Executor里的Task只能属于一个Application,因为一个Executor对应一个jvm进程,该进程里的数据是共享的,所以不能有别的Application的Task,以免数据泄露给其他的Application

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值