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