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

博客地址: http://blog.csdn.net/yueqian_zhu/



standalone模式下的框架图如下:

spark core源码分析13 异常情况下的容错保证_第1张图片

异常分析1: worker异常退出



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


异常分析2: executor异常退出

spark core源码分析13 异常情况下的容错保证_第2张图片

Executor作为Standalone集群部署方式下的最底层员工,一旦异常退出,其后果会是什么呢?

  1. executor异常退出,ExecutorRunner注意到异常,将情况通过ExecutorStateChanged汇报给Master
  2. Master收到通知之后,非常不高兴,尽然有小弟要跑路,那还了得,要求Executor所属的worker再次启动
  3. Worker收到LaunchExecutor指令,再次启动executor


异常分析3: master 异常退出

spark core源码分析13 异常情况下的容错保证_第3张图片


带头大哥如果不在了,会是什么后果呢?

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

个人觉得这位同学讲的很是生动形象!!!点个赞


引用:http://www.cnblogs.com/hseagle/p/3791779.html

你可能感兴趣的:(spark,spark,core)