所谓容错就是一个系统的部分出现错误的情况还能够持续地提供服务,不会因为一些错误而导致系统性能严重下降或出现系统瘫痪。在一个集群中出现机器故障、网络问题等常态,尤其集群达到较大规模后,很可能较频繁的出现机器故障等不能进行提供服务,因此分布性集群需要进行容错设计。

1. Executor容错

Spark支持多种运行模式,这些运行模型中的集群管理器会为任务分配运行资源,在运行资源中启动Executor,由Executor执行任务的运行,最终把任务运行状态发送给Driver。

(1)首先看Exeucutord的启动过程:在集群中由Master给应用程序分配运行资源后,然后再Worker中启动ExecutorRunner,而ExecutorRunner根据当前的运行模式启动CoarseGrainedExecutorBackend进程,当该进程会向Driver发送注册Executor信息,如果注册成功,则CoarseGrainedExecutorBackend在其内部启动Executor。Executor由ExecutorRunner进行管理,当Executor出现异常的时候(如所运行容器CoarseGrainedExecutorBackend进程异常退出等)由ExecutorRunner捕获当前异常并且发送ExecutorStateChanged消息给Worker进程。
(2)Worker进程接受到ExecutorStateChanged消息时,在Worker的handleExecutorStateChanged方法中,根据Executor状态消息更新,同时把Executor状态发送给Master。
(3)Master接收到Executor状态变化消息后,如果发现Executor出现异常退出,则调用Master.schedule方法,尝试获取可用的Worker节点并启动Executor,而这个Worker很可能不是失败之前运行的Executor的Worker节点。该尝试系统会进行10次,如果超过10次,则标记该应用运行失败并移除集群中该应用。

2. Worker异常

Spark独立运行模式采用的是Master/Slave的结构,其中Slave是由Worker来担任的,在运行的时候会发送心跳信息给Master,让Master知道Worker的实时状态,另一方面也会检测注册的Worker是否超时,因为在集群运行过程中,可能由于机器宕机或者进程被杀死等原因造成Worker进程异常退出

当Worker出现超时时,Master调用timeOutDeadWorker方法进行处理,在处理时根据Worker运行的是Executor和Driver进行分别处理。

  • 如果是Executor,Master先把该Worker上运行的Executor发送消息ExecutorUpdate给对应的Driver,告知Exeucotr已经丢失,同时把这些Executor从其应用程序中删除。
  • 如果是Drvier,则判断是否要重新启动。如果需要,则调用Master.schedule方法进行调度,分配合适节点重启Driver。

3. Master异常

Master作为Spark独立运行模式的核心,如果Master出现异常,则整个集群的运行资源将无法进行管理,整个集群将处于“群龙无首”的状态。很幸运的是,Spark在设计的时候考虑这个情况,在集群运行的时候,Master将启动一个或者多个StandBy Mster,当Master异常的时候,StandBy Mster将根据一定的规则确定其中一个为Master接管。

Spark详解(八):Spark 容错以及高可用性HA相关推荐

  1. NEXT社区小课堂 | 第四课:dBFT 2.0详解 | 委托拜占庭容错:技术细节、挑战和前景...

    NEXT社区 | 小课堂 由于近期NEXT社区加入很多新的小伙伴,有在校大学生,有对区块链感兴趣的传统企业从业者.为了更方便.更系统的让NEXT社区的伙伴们了解NEO的技术知识,因此我们开设了小课堂, ...

  2. Spark详解(二):Spark完全分布式环境搭建

    1. 前言 本文搭建了一个由三节点(master.slave1.slave2)构成的Spark完全分布式集群,并通过Spark分布式计算的一个示例测试集群的正确性.本文将搭建一个支持Yarn的完全分布 ...

  3. Spark详解(一):Spark及其生态圈概述

    1. Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架. Spark 运行速度快 易用性好 ...

  4. Spark详解(十三):Spark Streaming 运行架构分析

    1. 运行架构 SparkStreaming的主要功能包括流处理引擎的流数据接收与存储以及批处理作业的生成与管理,而Spark核心负责处理Spark Streaming发送过来的作用.Spark St ...

  5. Spark详解(四):Spark组件以及消息通信原理

    1. Spark核心基本概念 Application(应用程序):指用户编写的Spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点之上的Executor代码,在执行过程中由一个或多个 ...

  6. 大数据之spark详解

    目录 什么是spark: 功能历史上和hadoop的区别: spark的五大核心模块: ➢ Spark Core 什么是spark: 简单一点Spark 是一种基于内存的快速.通用.可扩展的大数据分析 ...

  7. SpringBatch 配置并行启动Job详解 (八)

    文章目录 一.创建并行job 前言:在日常业务中可能需要job并行执行,SpringBatch支持job并行步执行,并且配置简单. 代码已上传GitHub上面地址:https://github.com ...

  8. Spark详解(十四):Spark SQL的Join实现

    1. 简介 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余.更新容错等.而建立表和表之间关系的最佳方式就是Join操作.Join连接是大数据处理 ...

  9. Spark详解(十二):Spark Streaming原理和实现

    1 简介 SparkStreaming是Spark核心API的一个扩展,具有高吞吐量和容错能力的实时流数据处理系统,可以对多种数据源(如Kdfka.Flume.Twitter.Zero和TCP 套接字 ...

最新文章

  1. 类的静态成量变量必须初始化
  2. windows搭建SFTP服务器
  3. 对称加密、非对称加密深度解析
  4. 【工程项目经验】Compile Android Error fatal error opening dependency file No such file or directory
  5. 找不到合适的创业路该怎么办
  6. [转载].net常用函数
  7. PHP curl传输文件的版本兼容性
  8. java大数据与python大数据如何选择?
  9. java 面试 概率论_仿概率论系列(一) 开篇引导
  10. 如何学习HyperMesh
  11. (课程笔记1)ENVI裁剪出Landsat8全色波段和其他波段的同一区域数据
  12. 计算机科学与技术张萌,牢记使命,扬帆起航——记计算机科学学院两委第一次例会圆满召开...
  13. 【论文翻译】Multi-modal Knowledge Graphs for Recommender Systems
  14. 数学_余弦距离不满足三角不定式简单证明
  15. 服务器硬盘上面的12gb和6gb的区别,4GB和6GB有什么区别?看完千万别买错,已有多人后悔!...
  16. NVIDIA主控CPU/GPU设置频率
  17. 首旅如家蝉联世界酒店集团10强,中高端酒店开业超1000家
  18. 农产品溯源中GIS应用
  19. 制作U盘启动来安装Linux系统的具体方法(图文)
  20. 【机器人学】3-RUU-delta并联机器人正运动学、逆运动学和微分运动学

热门文章

  1. .NET MongoDB Driver 2.2使用示例
  2. Python自动化开发之基础篇--Day1
  3. html5 canvas 学习
  4. mysql 源代码学习 博客 [lock..]
  5. iOS开发系列--并行开发其实很容易
  6. 一个简单判等例子的深度分析
  7. *45.程序的装入方式
  8. 阿里重组AI实验室的背后主因,马云也无奈
  9. 人脸识别安全吗?调查称六成受访者认为技术有被滥用趋势
  10. Al芯片前景看好,市场规模在2023年将达343亿美元