过雁

--每天都被梦想唤醒--

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2015年1月25日

摘要: 延迟调度算法的实现是在TaskSetManager类中的,它通过将task存放在四个不同级别的hash表里,当有可用的资源时,resourceOffer函数的参数之一(maxLocality)就是这些资源的最大(或者最优)locality级别,如果存在task满足资源的locality,那从最优级别的hash表。也就是task和excutor都有loclity级别,如果能找到匹配的task,那从匹... 阅读全文
posted @ 2015-01-25 22:31 过雁 阅读(1127) 评论(0) 推荐(0) 编辑

摘要: 当某个task完成后,某个shuffle Stage X可能已完成,那么就可能会一些仅依赖Stage X的Stage现在可以执行了,所以要有响应task完成的状态更新流程。=======================DAG task完成后的更新流程===================->CoarseGrainedSchedulerBackend::receiveWithLogging --调... 阅读全文
posted @ 2015-01-25 22:29 过雁 阅读(495) 评论(0) 推荐(0) 编辑

摘要: spark的Executor是执行task的容器。和java的executor概念类似。===================start executor runs task============================->CoarseGrainedExecutorBackend::receiveWithLogging --接收CoarseGrainedSchedulerBackend发... 阅读全文
posted @ 2015-01-25 01:55 过雁 阅读(829) 评论(0) 推荐(0) 编辑

摘要: 调度算法的最基本工作之一,就是比较两个可执行的task的优先级。spark提供的FIFO和FAIR的优先级比较在SchedulingAlgorithm这个接口体现。FIFO:--计算优先级的差。注意,在程序中,大部分时候是优先级的数字越小,它优先级越高--如果优先级相同,那么stage编号越靠前,优先级越高--如果优先级字段和stage id都相同,那么s2比s1更优先。(有这种情况?)FAIR... 阅读全文
posted @ 2015-01-25 00:35 过雁 阅读(1242) 评论(0) 推荐(0) 编辑

摘要: 任务调度器的接口类。应用程序可以定制自己的调度器来执行。当前spark只实现了一个任务调度器TaskSchedulerImpl===================task scheduler begin====================-> TaskSchedulerImpl::submitTasks(taskSet: TaskSet) 处理接受task,它做了同步操作。 -> new ... 阅读全文
posted @ 2015-01-25 00:33 过雁 阅读(1174) 评论(0) 推荐(0) 编辑

摘要: Stage 是一组独立的任务,他们在一个job中执行相同的功能(function),功能的划分是以shuffle为边界的。DAG调度器以拓扑顺序执行同一个Stage中的task。/** * A stage is a set of independent tasks all computing the same function that need to run as part * of a Spa... 阅读全文
posted @ 2015-01-25 00:32 过雁 阅读(482) 评论(0) 推荐(0) 编辑