无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素。在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段。ShuffleManager的主要功能是在task直接传递数据,所以getWriter和getReader是它的主要接口。大流程: ...
分类:
其他好文 时间:
2015-01-26 01:21:10
阅读次数:
488
延迟调度算法的实现是在TaskSetManager类中的,它通过将task存放在四个不同级别的hash表里,当有可用的资源时,resourceOffer函数的参数之一(maxLocality)就是这些资源的最大(或者最优)locality级别,如果存在task满足资源的locality,那从最优级别...
分类:
其他好文 时间:
2015-01-25 23:58:15
阅读次数:
489
当某个task完成后,某个shuffle Stage X可能已完成,那么就可能会一些仅依赖Stage X的Stage现在可以执行了,所以要有响应task完成的状态更新流程。=======================DAG task完成后的更新流程===================->Coar...
分类:
其他好文 时间:
2015-01-25 23:53:57
阅读次数:
281
这个模式所做的事情概括一下就是把多个不同的任务和操作合并到一个计算单元中,从而使云计算应用提高计算资源利用率,降低管理开销和任务之间连接交互的开销。
PS:我这里对后文中所翻译的“计算单元”做个小小的注释,这里的计算单元可以认为是逻辑的运行容器,可以是基于cgroup的各种container,也可以是像Storm中的worker,Spark中的Executor等等。这个模式除了在自己设计分布式系...
分类:
其他好文 时间:
2015-01-25 12:37:47
阅读次数:
333
spark的Executor是执行task的容器。和java的executor概念类似。===================start executor runs task============================->CoarseGrainedExecutorBackend::rec...
分类:
其他好文 时间:
2015-01-25 06:27:23
阅读次数:
213
调度算法的最基本工作之一,就是比较两个可执行的task的优先级。spark提供的FIFO和FAIR的优先级比较在SchedulingAlgorithm这个接口体现。FIFO:--计算优先级的差。注意,在程序中,大部分时候是优先级的数字越小,它优先级越高--如果优先级相同,那么stage编号越靠前,优...
分类:
编程语言 时间:
2015-01-25 01:21:47
阅读次数:
233
任务调度器的接口类。应用程序可以定制自己的调度器来执行。当前spark只实现了一个任务调度器TaskSchedulerImpl===================task scheduler begin====================->TaskSchedulerImpl::submitT...
分类:
其他好文 时间:
2015-01-25 01:18:22
阅读次数:
285
Stage 是一组独立的任务,他们在一个job中执行相同的功能(function),功能的划分是以shuffle为边界的。DAG调度器以拓扑顺序执行同一个Stage中的task。/** * A stage is a set of independent tasks all computing the...
分类:
其他好文 时间:
2015-01-25 01:16:36
阅读次数:
197
DAGScheduler最终创建了task set,并提交给了taskScheduler。那先得看看task是怎么定义和执行的。Task是execution执行的一个单元。/** * A unit of execution. We have two kinds of Task's in Spark:...
分类:
其他好文 时间:
2015-01-24 00:28:49
阅读次数:
488
在前面的sparkContex和RDD都可以看到,真正的计算工作都是同过调用DAGScheduler的runjob方法来实现的。这是一个很重要的类。在看这个类实现之前,需要对actor模式有一点了解:http://en.wikipedia.org/wiki/Actor_modelhttp://www...
分类:
其他好文 时间:
2015-01-24 00:26:17
阅读次数:
455