TaskScheduler原理剖析与源码分析
来源:互联网 发布:sql 优化方面的书籍 编辑:程序博客网 时间:2024/06/13 08:58
def resourceOffers(offers: Seq[WorkerOffer]): Seq[Seq[TaskDescription]] = synchronized { var newExecAvail = false for (o <- offers) { executorIdToHost(o.executorId) = o.host executorIdToTaskCount.getOrElseUpdate(o.executorId, 0) if (!executorsByHost.contains(o.host)) { executorsByHost(o.host) = new HashSet[String]() executorAdded(o.executorId, o.host) newExecAvail = true } for (rack <- getRackForHost(o.host)) { hostsByRack.getOrElseUpdate(rack, new HashSet[String]()) += o.host } }
val tasks = shuffledOffers.map(o => new ArrayBuffer[TaskDescription](o.cores)) val availableCpus = shuffledOffers.map(o => o.cores).toArray
val sortedTaskSets = rootPool.getSortedTaskSetQueue for (taskSet <- sortedTaskSets) { logDebug("parentName: %s, name: %s, runningTasks: %s".format( taskSet.parent.name, taskSet.name, taskSet.runningTasks)) if (newExecAvail) { taskSet.executorAdded() } }
var launchedTask = false for (taskSet <- sortedTaskSets; maxLocality <- taskSet.myLocalityLevels) { do {
//resourceOfferSingleTaskSet()方法遍历所有executor,调用manager的resoucerOffer方法,找到合适的本地化级别找到可以启动的task执行task。 launchedTask = resourceOfferSingleTaskSet( taskSet, maxLocality, shuffledOffers, availableCpus, tasks) } while (launchedTask) }
if (tasks.size > 0) { hasLaunchedTask = true } return tasks
阅读全文
0 0
- TaskScheduler原理剖析与源码分析
- Spark2.2 TaskScheduler原理剖析与源码分析
- Executor原理剖析与源码分析
- Worker原理剖析与源码分析
- DAGScheduler原理剖析与源码分析
- Shuffle原理剖析与源码分析
- CacheManager原理剖析与源码分析
- BlockManager原理剖析与源码分析
- Master原理剖析与源码分析:主备切换机制原理剖析与源码分析
- Master原理剖析与源码分析:注册机制原理剖析与源码分析
- Master原理剖析与源码分析:Master状态改变处理机制原理剖析与源码分析
- 【Spark Core】TaskScheduler源码与任务提交原理浅析1
- 【Spark Core】TaskScheduler源码与任务提交原理浅析2
- 6.job触发流程原理剖析与源码分析
- job触发流程原理剖析与源码分析
- Spark2.2 job触发流程原理剖析与源码分析
- Spark内核源码深度剖析:SparkContext原理剖析与源码分析
- Spark内核源码深度剖析:Master主备切换机制原理剖析与源码分析
- python面向对象编程(4)
- AlarmManager+Notification实现定时通知提醒功能
- canvas多边形(蜘蛛图)的画法
- 小机房的树
- Linux下端口被占用解决
- TaskScheduler原理剖析与源码分析
- python中的类变量、成员变量和成员函数的局部变量使用
- 数据库连接池 dbcp与c3p0的使用区别
- 阿里编程规范插件eclipse安装步骤
- vc++程序崩溃后不生成dump文件
- Qt学习之路: QByteArray和QVariant
- Actor的熔断(CircuitBreaker)机制
- Spring boot admin介绍
- The current type is an interface and cannot be constructed. Are you missing a type mapping?