xuanxufeng 发表于 2015-9-9 16:01:33

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








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发出的




博客地址: http://blog.csdn.net/yueqian_zhu/
页: [1]
查看完整版本: spark core源码分析:spark异常情况下如何保证容错的