本文分享自华为云社区《图解spark是如何实现集群的高可用》,作者:breakDawn。

我们看下spark是怎么针对master、worker、executor的异常情况做处理的。

容错机制-exeuctor退出

首先可以假设worker中的executor执行任务时,发送了莫名其妙的异常或者错误,然后对应线程消失了。
我们看这个时候会做什么事情

上图总结下来就是:
executor由backend进程包着,如果抛异常,他会感知到,并调用executorRunner.exitStatus(), 通知worker

看下通知worker之后发生了什么:

  • worker会通知master,master会将exectorInfo清除,然后调度worker让他重新创建
  • 这里可以看到worker创建executor的指令仍然是让master来调度和管理的,不是自己想创建就创建。
    接下来就是重建executor,然后重新开始执行这个地方的任务了(因此数据也会重新拉,之前发送端缓存的数据就能够派上用场了)

完整流程图如下:

worker异常退出

假设此时是worker挂掉了, 那么正在执行任务的exeuctor和master会怎么做呢?如下:

可以看到worker有一个shutdownHook,会帮忙关闭正在执行的executor。
但是此时worker挂了,因此没法往master发送消息了,怎么办?
上一节有讲到master和worker之间存在心跳,因此就会有如下处理:

可以看到当master发现worker的心跳丢失时,会进行:

  • 删除执行列表里的worker信息
  • 重新下发创建worker的操作给对应spark节点
  • 通知driver这个worker里面的exector都已经lost了

看下此时worker重建和driver分别做了什么:

这里还可以看到1个很重要的概念:

  • master关心worker状态
  • driver会关心executor进展
  • exeuctor重建后需要注册到driver上

完整流程图如下:

master异常

由于master不参与任务的计算,只是对worker做管理,因此对于master的异常,分两种情况:

1:任务正常运行时master异常退出

则流程如下:

从这里可以看到当任务正常运行时,只会在结束时,由driver去触发master的清理资源操作,但是master进程已经挂掉了,所以也没关系。

2:当任务执行过程中,master挂掉后,worker和executor也异常了

可以看到这时候时没办法重启exeuctor的。此时driver那边就会看起来任务一直没进展了。

为了避免这种情况,master可以做成无状态化,然后做主备容灾。当然master节点做的时候比较少,一般不容易崩溃,除非认为kill或者部署节点故障。

点击关注,第一时间了解华为云新鲜技术~​

手绘流程图讲解spark是如何实现集群的高可用相关推荐

  1. spark 提交任务到集群

    spark 提交任务到集群 链接 posted on 2018-07-11 15:46 luoganttcc 阅读(...) 评论(...) 编辑 收藏

  2. Spark自带的集群模式(Standalone),Spark/Spark-ha集群搭建

    1.Spark自带的集群模式 对于Spark自带的集群模式,Spark要先启动一个老大(Master),然后老大Master和各个小弟(Worker)进行通信,其中真正干活的是Worker下的Exec ...

  3. spark之12:集群模式概述

    spark之12:集群模式概述 @(SPARK)[spark, 大数据] 英文原文地址:https://spark.apache.org/docs/latest/cluster-overview.ht ...

  4. 在local模式下的spark程序打包到集群上运行

    一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...

  5. spark内核揭秘-02-spark集群概览

    2019独角兽企业重金招聘Python工程师标准>>> Spark集群预览: 官方文档对spark集群的初步描述如下,这是一个典型的主从结构: 官方文档对spark集群中的一些关键点 ...

  6. Spark基础学习笔记05:搭建Spark Standalone模式的集群

    文章目录 零.本讲学习目标 一.Spark集群拓扑 (一)集群拓扑 (二)集群角色分配 二.搭建集群 (一)私有云上创建三台虚拟机 (二)利用SecureCRT登录三台虚拟机 1.登录master虚拟 ...

  7. Spark: Structured JDBC 方式访问远程的高可用HA的HIVE

    1. 背景 Spark: Structured JDBC 方式访问远程的高可用HA的HIVE,hive是看高可用的,连接信息如下 jdbc:hive2://xx.cdh1.test.dtwave.in ...

  8. spark 安装单机版和集群

    本文介绍安装mac单机版的spark,和spark 集群安装 分以下步骤 安装scala 下载spark 压缩包并解压 修改spark的配置文件 配置环境变量 验证安装情况 安装Scala mac安装 ...

  9. 本地提交spark_Spark在Windows下运行,本地提交spark到远程yarn集群

    [问题]Spark在windows能跑集群模式吗? 我认为是可以的,但是需要详细了解cmd命令行的写法.目前win下跑spark的单机模式是没有问题的. [关键点]spark启动机制容易被window ...

最新文章

  1. 更新了朋友圈微博动态,好友何时会点赞评论?
  2. Layer 2 Tunneling Protocol
  3. MSSql存储过程高效应用
  4. Teams Developer Portal介绍
  5. MySQL学习笔记_1_MySQL数据库管理系统概述
  6. ssis 计划任务_SSIS Hadoop连接管理器和相关任务
  7. 【docker】使用云服务器运行docker时无法访问宿主机的映射端口
  8. arm9 adc及触摸屏
  9. 基于RV1126平台imx291分析 --- 统计已注册的设备信息
  10. 机械硬盘 与 固态硬盘SSD
  11. ImportError: CuPy is not correctly installed解决方法
  12. 中文翻唱日语歌曲大全
  13. Unity文件转移出现的粉红色材质的处理方法
  14. YOLO ZOO:YOU ONLY LOOK ONCE ZOO
  15. 企业固定资产标签粘贴规范
  16. 勒索病毒2019年常见的后缀有ITLOCK/AOL/VC/phobos/ETH/x3m/qwex/H
  17. Linux摄像头UVC驱动第五篇--启动传输之设置摄像头参数
  18. 国外众测之密码找回漏洞
  19. IntelliJ IDEA之高效插件让你的代码迸发火花-不再下午犯困
  20. springmvc拦截器 绝对路径

热门文章

  1. 开源软件的安全性风险_开源安全性,Google惊喜等
  2. Bootstrap 缩略图
  3. 魔兽服务器联盟在线,《魔兽世界》怀旧服再开新服,部落联盟泾渭分明?
  4. 未来教育计算机二级第一套ppt解析,计算机二级未来教育PPT部分答案
  5. 如何做好一位合格qc_如何管理好生产质量?
  6. ocdma相干非相干_非相干系统是什么意思
  7. 《Linux 鸟哥私房菜》 第一部分 Linux文件、目录与磁盘格式
  8. 2016级算法第六次上机-D.AlvinZH的学霸养成记V
  9. hdu 1269 tarjan求强连通分量
  10. 面向对象与原型(二)