当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进行资源调度。