Spark源码分析之TaskSetManager分析
2017-11-09 09:56
495 查看
调度单个任务集里任务,跟踪每一个task,task失败进行重试,通过延迟调度处理这个任务集的本地感知调度
一 核心属性
TaskSchedulerImpl sched:TaskScheduler实现类
TaskSet taskSet: DAGScheduler提交的任务集,一般和一个stage对应着,每一个task对应着一个RDD分区
Int maxTaskFailures:所允许 的最大失败次数
SPECULATION_QUANTILE:对于一些特殊的stage,task要完成多少百分比,才可以进行推测
SPECULATION_MULTIPLIER:一个任务比预测的中间值要慢多少倍才会推测
Long maxResultSize:task返回的最大的结果限制,默认是1G
Serializer ser:序列化
Array[Task] tasks: 任务集的所有任务
Int numTasks:任务集里任务的长度
Array[Int](numTasks) copiesRunning:拷贝的正在运行的一个task数组
Array[Boolean](numTasks) successful:存放成功的任务
Array[Int](numTasks) numFailures:存放任务失败次数
Int tasksSuccessful: 成功任务数量
Int weight: 权重
Int priority:任务集的优先级
Int stageId:任务集所在的stage
String name:TaskSetManager的名字
Int totalResultSize:总结果大小
Int calculatedTasks: 计算过的任务数量
HashSet[Long] runningTasksSet:正在运行的任务集
boolean isZombie: 表示TaskSetManager没有更多的task需要发起,就为true,否则如果有需要发起的task,该属性值就是false
HashMap[String, ArrayBuffer[Int]]pendingTasksForExecutor:每一个executor的即将发生的任务集,数据结构优点类似于栈,后进先出。这些集合实际上被视为堆栈,其中新任务被添加到arraybuffer的末尾并从末尾删除。这样可以更快地检测重复失败的任务,因为每当任务失败时,它就会被放回堆栈的头部。
HashMap[String, ArrayBuffer[Int]]pendingTasksForHost: 每一个主机上即将发生的task集合,也是栈结构
HashMap[String, ArrayBuffer[Int]]pendingTasksForRack:每一个机架上即将发生的task集合,也是栈结构
ArrayBuffer[Int] pendingTasksWithNoPrefs:没有本地首选项的未决任务。
ArrayBuffer[Int] allPendingTasks:包含所有未决任务的集合
HashSet[Int] speculatableTasks: 推测执行任务集合
HashMap[Long, TaskInfo] taskInfos: <taskindex,TaskInfo>映射列表
Array[TaskLocality.TaskLocality] myLocalityLevels:locality_level 本地化级别
Long localityWaits:每一个级别的等待时间
Int currentLocalityIndex: 当前本地化索引
ConcurrentLinkedQueue[Schedulable] schedulableQueue:调度队列
SchedulingMode schedulingMode:调度的模式
二 重要方法
2.1 computeValidLocalityLevels 确定有效的locality level
2.1 addPendingTask 添加一个任务到pending 任务列表
一 核心属性
TaskSchedulerImpl sched:TaskScheduler实现类
TaskSet taskSet: DAGScheduler提交的任务集,一般和一个stage对应着,每一个task对应着一个RDD分区
Int maxTaskFailures:所允许 的最大失败次数
SPECULATION_QUANTILE:对于一些特殊的stage,task要完成多少百分比,才可以进行推测
SPECULATION_MULTIPLIER:一个任务比预测的中间值要慢多少倍才会推测
Long maxResultSize:task返回的最大的结果限制,默认是1G
Serializer ser:序列化
Array[Task] tasks: 任务集的所有任务
Int numTasks:任务集里任务的长度
Array[Int](numTasks) copiesRunning:拷贝的正在运行的一个task数组
Array[Boolean](numTasks) successful:存放成功的任务
Array[Int](numTasks) numFailures:存放任务失败次数
Int tasksSuccessful: 成功任务数量
Int weight: 权重
Int priority:任务集的优先级
Int stageId:任务集所在的stage
String name:TaskSetManager的名字
Int totalResultSize:总结果大小
Int calculatedTasks: 计算过的任务数量
HashSet[Long] runningTasksSet:正在运行的任务集
boolean isZombie: 表示TaskSetManager没有更多的task需要发起,就为true,否则如果有需要发起的task,该属性值就是false
HashMap[String, ArrayBuffer[Int]]pendingTasksForExecutor:每一个executor的即将发生的任务集,数据结构优点类似于栈,后进先出。这些集合实际上被视为堆栈,其中新任务被添加到arraybuffer的末尾并从末尾删除。这样可以更快地检测重复失败的任务,因为每当任务失败时,它就会被放回堆栈的头部。
HashMap[String, ArrayBuffer[Int]]pendingTasksForHost: 每一个主机上即将发生的task集合,也是栈结构
HashMap[String, ArrayBuffer[Int]]pendingTasksForRack:每一个机架上即将发生的task集合,也是栈结构
ArrayBuffer[Int] pendingTasksWithNoPrefs:没有本地首选项的未决任务。
ArrayBuffer[Int] allPendingTasks:包含所有未决任务的集合
HashSet[Int] speculatableTasks: 推测执行任务集合
HashMap[Long, TaskInfo] taskInfos: <taskindex,TaskInfo>映射列表
Array[TaskLocality.TaskLocality] myLocalityLevels:locality_level 本地化级别
Long localityWaits:每一个级别的等待时间
Int currentLocalityIndex: 当前本地化索引
ConcurrentLinkedQueue[Schedulable] schedulableQueue:调度队列
SchedulingMode schedulingMode:调度的模式
二 重要方法
2.1 computeValidLocalityLevels 确定有效的locality level
2.1 addPendingTask 添加一个任务到pending 任务列表
相关文章推荐
- Spark源码分析 – BlockManager
- Spark BlockManager的通信及内存占用分析(源码阅读九)
- Spark源码学习1.3——TaskSetManager.scala
- sparkContext源码分析
- 【源码分析】Opencv-免装OpenCV Manager
- Spark源码分析之分区器的作用
- spark[源码]-任务调度源码分析[三]
- 深入理解Spark 2.1 Core (十四):securityManager 类源码分析
- spark 1.6.0 core源码分析6 Spark job的提交
- 【ironic 源码分析】task_manager 源码分析
- ViewPager部分源码分析二:FragmentManager对Fragment状态的管理完成ViewPager的child添加或移出
- Spark源码分析文章
- spark源码学习(十一)---cacheManager分析
- spark2.1源码分析3:spark-rpc如何实现将netty的Channel隐藏在inbox中
- memcache-client-forjava 源码分析之MemcachedCacheManager
- 【Spring实战】----Security4.1.3鉴权之美--基于投票的AccessDecisionManager实现及源码分析
- Spark学习2_Spark源码分析:多种部署方式之间的区别与联系
- Spark SQL Catalyst源码分析之Optimizer
- [Spark性能调优] 源码补充 : Spark 2.1.X 中 Unified 和 Static MemoryManager