executor执行task
executor收到LaunchTask消息后,先将消息解码成TaskDescription对象,再调用launchTask方法执行。
创建TaskRunner的线程包装类,用于执行task。提交到线程池执行。
TaskRunner的run方法中将task对象反序列化出来。
执行task的run方法,执行后结果返回。
Task是抽象类,run方法中是调用了runTask方法。
runTask是抽象方法,具体实现是在子类ResultTask和ShuffleMapTask中。
ResultTask的runTask方法
ResultTask是结果task,最终是返回结果。
taskBinary反序列化成(rdd, func),调用func方法返回结果。
func是 (TaskContext, Iterator[T]) => U
ShuffleMapTask的runTask方法
taskBinary反序列化成(rdd, dep),调用ShuffleWriteProcessor生成shuffle结果。
ShuffleWriteProcessor在shuffle包下面,放到shuffle部分再讲。