博客地址: http://blog.csdn.net/yueqian_zhu/
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://www.cnblogs.com/hseagle/p/3791779.html