频道栏目
首页 > 资讯 > 云计算 > 正文

Spark源码知识讲解之TaskSetManager分析

17-11-09        来源:[db:作者]  
收藏   我要投稿

调度单个任务集里任务,跟踪每一个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: 映射列表

Array[TaskLocality.TaskLocality] myLocalityLevels:locality_level 本地化级别

Long localityWaits:每一个级别的等待时间

Int currentLocalityIndex: 当前本地化索引

ConcurrentLinkedQueue[Schedulable] schedulableQueue:调度队列

SchedulingMode schedulingMode:调度的模式

二 重要方法

2.1 computeValidLocalityLevels 确定有效的locality level

2.1 addPendingTask 添加一个任务到pending 任务列表

相关TAG标签
上一篇:MySQL数据库表的优化与列类型选择、索引优化策略讲解
下一篇:云计算Zookeeper-ACL(AccessControlList)解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站