如果是主动退出,那Worker在退出之前,这里叫worker_1,会杀死自己每个Executor进程。
Executor异常退出的流程之前已经讲过了。
我们在Master和Worker知道,Worker会定期的向Master发送心跳,如果worker_1退出,那我们就可以心跳信息中就可以发现,超过60秒没有心跳的Worker此时可能异常退出了,所以就会把这个worker_1的状态改为DEAD,并把他从缓存中移除。
从worker_1中获取对应的Executor对应的Application,告知这些Application,你的Executor不能用了。然后把ApplicationInfo中对应的Executor移除掉,ApplicationInfo移除Executor时,会记录被移除的Executor,把Executor从executors中移除,并且把申请到的CPU资源扣减回去。
如果worker_1上面有运行着Driver,那就会把内存中的DriverInfo信息和持久化引擎的DriverInfo信息移除。
重新创建一个Driver信息,保存内存中,并进行持久化。
最后进行资源调度,重新在worker上分配driver和Executor。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。