Executor源码分析


一:executor ***制
1.worker为application启动的Executor进程是 CoarseGrainedexecutorbackend  

2.actor的初始化方法prestart()
(1)获取driver的actor
(2)向driver发送RegisterExecutor消息,进行反向注册
(3)driver注册成功executor后,返回消息被 RegisteredExecutor 接受,
     而后创建executor执行句柄
     
二:task启动机制
1.launchTask启动Task
(1)反序列化task  env.closureSerializer.newInstance() 
                   ser.deserialize()
(2)调用Executor 内部的 launchTask() 
1>对每一个task 创建TaskRunner(继承于Runnable接口)
2>将taskRunner放入runningTasks集合(继承于CocurrentHashMap)(作为内存缓存)
3>剑taskRunner放入threadpool中(有排队机制)

流程图:

Executor源码分析