当Worker创建Executor的时候,会启动一个线程来创建这个Executor,并且等待获取Executor进程的退出状态。
如果Executor异常退出,这个线程就会知道,然后就会发信息告知Worker。
Worker收到消息后,就会把这个消息转发给Master。这个消息会携带Application的ID和Executor的ID。
Master收到消息后,就会根据Application的ID和Executor的ID找到Master内存中Application和Executor信息,并告知Application。
然后把ApplicationInfo中对应的Executor以及WorkerInfo对应的Executor移除掉。
ApplicationInfo移除Executor时,会记录被移除的Executor,把Executor从executors中移除,并且把申请到的CPU资源扣减回去。
WorkerInfo移除Executor时,会把Executor占用的CPU、内存资源扣减回去。
由于Executor已经退出,以及Master保存的申请的资源也还原,所以Master会重新给Application进行资源调度。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。