Spark资源调度和任务调度
一.资源调度&任务调度
1.启动集群后,Worker节点会周期性的【心跳】向Master节点汇报资源情况,Master掌握集群资源情况。
2.当Spark提交一个Application后,根据RDD之间的依赖关系将Application构建成一个DAG有向无环图。
3.任务提交后,Spark会在Driver端创建两个对象:DAGScheduler和TaskScheduler。
4.DAGScheduler是任务调度的高层调度器,是一个对象。DAGScheduler的主要作用就是将DAG根据RDD之间的宽窄依赖关系划分为一个个Stage,然后将这些Stage以TaskSet的形式提交给TaskScheduler【TaskScheduler是任务调度的底层调度器,这里TaskSet其实就是一个集合,里面封装的就是一个个的task任务,也就是stage中并行的task任务】。
5.TaskScheduler会遍历TaskSet集合,拿到对应的task后会将task发送到计算节点Executor上去执行【就是发送到Executor上的线程池ThreadPool上执行】。
6.Task在Executor线程池中的运行情况会向TaskScheduler反馈,当task运行失败时,则由TaskScheduler负责重试,将task重新发送到Executor去执行,默认重试3次。如果重试3次依然失败,那么这个task所在的Stage就失败了。Stage失败则由DAGScheduler负责重试,重新发送TaskSet到TaskScheduler,Stage默认会重试4次。如果4次以后依然失败,那么这个job就失败了,对应的这个application也失败。
备注:TaskScheduler不仅负责重试task,还负责重试straggling【执行相比其它任务缓慢的task】task。TaskScheduler会重新启动一个新的task来运行这个缓慢的task执行的处理逻辑。两个task那个先执行完,就以那个task的执行结果为准。这就是spark的推测执行机制。在spark中推测执行默认是关闭的。推测执行可以通过配置spark.speculation属性来配置。
二.图解调度流程

三.注意
1.对于ETL类型要入数据库的业务要关闭推测执行机制,这样就不会又重复的数据入库。
2.如果遇到数据倾斜的情况,开启推测执行则会有可能导致一直会有task重新启动处理相同的逻辑,任务可能一直处于处理不完的状态。
Spark资源调度和任务调度的更多相关文章
- 【Spark篇】---Spark资源调度和任务调度
一.前述 Spark的资源调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要. 自愿申请的话,本文分粗粒度和细粒度模式分别介绍. 二.具体 Spark资源调度流程图: ...
- 【Spark-core学习之六】 Spark资源调度和任务调度
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- Spark 资源调度 与 任务调度
Spark 资源调度与任务调度的流程(Standalone): 启动集群后, Worker 节点会向 Master 节点汇报资源情况, Master掌握了集群资源状况. 当 Spark 提交一个 Ap ...
- Spark 资源调度及任务调度
1. 资源分配 通过SparkSubmit进行提交应用后,首先会创建Client将应用程序(字节码文件.class)包装成Driver,并将其注册到Master.Master收到Client的注册请 ...
- Spark资源调度及任务调度
1. 资源分配 通过SparkSubmit进行提交应用后,首先会创建Client将应用程序(字节码文件.class)包装成Driver,并将其注册到Master.Master收到Client的注册请 ...
- Spark Core_资源调度与任务调度详述
转载请标明出处http://www.cnblogs.com/haozhengfei/p/0593214ae0a5395d1411395169eaabfa.html Spark Core_资源调度与任务 ...
- Spark Core 资源调度与任务调度(standalone client 流程描述)
Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动: 集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...
- spark 图文详解:资源调度和任务调度
讲说spark的资源调度和任务调度,基本的spark术语,这里不再多说,懂的人都懂了... 按照数字顺序阅读,逐渐深入理解:以下所有截图均为个人上传,不知道为什么总是显示别人的QQ,好尴尬,无所谓啦, ...
- [Spark内核] 第31课:Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
本課主題 Master 资源调度的源码鉴赏 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... 资源调度管理 任务调度与资源是通过 DAGScheduler.Ta ...
随机推荐
- [Swift]LeetCode245.最短单词距离 III $ Shortest Word Distance III
This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...
- [Swift]LeetCode793. 阶乘函数后K个零 | Preimage Size of Factorial Zeroes Function
Let f(x) be the number of zeroes at the end of x!. (Recall that x! = 1 * 2 * 3 * ... * x, and by con ...
- [Swift]LeetCode889. 根据前序和后序遍历构造二叉树 | Construct Binary Tree from Preorder and Postorder Traversal
Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...
- 优化之XML组件
可在XML Parser 组件和XML Source定义中删除非project group,因为不需为这些非project group分配内存,但需要维护主键外键约束 ________________ ...
- Python内置函数(17)——divmod
英文文档: divmod(a, b) Take two (non complex) numbers as arguments and return a pair of numbers consisti ...
- 软件工程-构建之法 小学生四则运算的出题程序,android版本
内容中包含 base64string 图片造成字符过多,拒绝显示
- 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些
目录 1 HotSpot VM的历史 2 HotSpot VM 概述 2.1 编译器 2.2 解释器 2.3 解释型语言 VS 编译型语言 3 动态编译 3.1 什么是动态编译 3.2 HotSpot ...
- spring框架应用系列四:切面编程(环绕通知与前后置通知区别)
切面编程(环绕通知与前后置通知区别) 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7867034.html 解决问 ...
- leetcode — path-sum-ii
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...
- leetcode — gray-code
import org.lep.leetcode.groupanagrams.GroupAnagram; import java.util.ArrayList; import java.util.Arr ...