分享

spark core源码分析:spark异常情况下如何保证容错的








standalone模式下的框架图如下:
1.png



异常分析1: worker异常退出
2.png


  • worker异常退出,比如说有意识的通过kill指令将worker杀死
  • worker在退出之前,会将自己所管控的所有小弟executor全干掉
  • worker需要定期向master改善心跳消息的,现在worker进程都已经玩完了,哪有心跳消息,所以Master会在超时处理中意识到有一个“分舵”离开了
  • Master非常伤心,伤心的Master将情况汇报给了相应的Driver
  • Driver通过两方面确认分配给自己的Executor不幸离开了,一是Master发送过来的通知,二是Driver没有在规定时间内收到Executor的StatusUpdate,于是Driver会将注册的Executor移除

异常分析2: executor异常退出 3.png


Executor作为Standalone集群部署方式下的最底层员工,一旦异常退出,其后果会是什么呢?
  • executor异常退出,ExecutorRunner注意到异常,将情况通过ExecutorStateChanged汇报给Master
  • Master收到通知之后,非常不高兴,尽然有小弟要跑路,那还了得,要求Executor所属的worker再次启动
  • Worker收到LaunchExecutor指令,再次启动executor

异常分析3: master 异常退出 4.png


带头大哥如果不在了,会是什么后果呢?
  • worker没有汇报的对象了,也就是如果executor再次跑飞,worker是不会将executor启动起来的,大哥没给指令
  • 无法向集群提交新的任务
  • 老的任务即便结束了,占用的资源也无法清除,因为资源清除的指令是Master发出的





没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条