摘要: 对于ResultTask,直接执行func操作,最后告知任务是否执行完成;而对于ShuffleMapTask,则需要将中间结果存储到实例化DirectTaskResult,以备下一个task使用,同时还要返回实例化的MapStatus。Executor.run中,当Task执行完毕调用execBac... 阅读全文
posted @ 2015-07-26 21:58 gOOner黑骑士 阅读(732) 评论(0) 推荐(0) 编辑
摘要: 前面说到向executorActor(task.executorID)发送LaunchTask(task)消息,在CoarseGrainedExecutorBackend中定义receive接收launchTask消息,执行executor.launchTaskoverride def receiv... 阅读全文
posted @ 2015-07-26 21:57 gOOner黑骑士 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: 前面提到,submitMissingTask是分发任务的开始,首先submitMissingTasks判断该stage是否为shuffle map stage,是则getPreferredLocs,实例化一个ShuffleMapTasks返回一组task集合,否则是final stage,getPr... 阅读全文
posted @ 2015-07-26 21:51 gOOner黑骑士 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 回到dagScheduler.runJob,submit提交作业返回waiter,waiter.awaitResult阻塞线程,判断Job是否执行成功def runJob[T, U: ClassTag]( rdd: RDD[T], func: (TaskContext, Iter... 阅读全文
posted @ 2015-07-26 21:43 gOOner黑骑士 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 基本概念:Job,Stage,Task,DagScheduler,TaskScheduler……RDD的操作可以分为Transformations和Actions,Transformations是lazy的不立即执行,Action则会触发作业的提交和执行。例如本例中的foreachdef forea... 阅读全文
posted @ 2015-07-26 10:14 gOOner黑骑士 阅读(293) 评论(0) 推荐(0) 编辑