standalone模式下的框架图如下:
异常分析1: worker异常退出
- worker异常退出,比如说有意识的通过kill指令将worker杀死
- worker在退出之前,会将自己所管控的所有小弟executor全干掉
- worker需要定期向master改善心跳消息的,现在worker进程都已经玩完了,哪有心跳消息,所以Master会在超时处理中意识到有一个“分舵”离开了
- Master非常伤心,伤心的Master将情况汇报给了相应的Driver
- Driver通过两方面确认分配给自己的Executor不幸离开了,一是Master发送过来的通知,二是Driver没有在规定时间内收到Executor的StatusUpdate,于是Driver会将注册的Executor移除
异常分析2: executor异常退出
Executor作为Standalone集群部署方式下的最底层员工,一旦异常退出,其后果会是什么呢? - executor异常退出,ExecutorRunner注意到异常,将情况通过ExecutorStateChanged汇报给Master
- Master收到通知之后,非常不高兴,尽然有小弟要跑路,那还了得,要求Executor所属的worker再次启动
- Worker收到LaunchExecutor指令,再次启动executor
异常分析3: master 异常退出
带头大哥如果不在了,会是什么后果呢? - worker没有汇报的对象了,也就是如果executor再次跑飞,worker是不会将executor启动起来的,大哥没给指令
- 无法向集群提交新的任务
- 老的任务即便结束了,占用的资源也无法清除,因为资源清除的指令是Master发出的
|