摘要:本文讲述spark是怎么针对master、worker、executor的异常情况做处理的。

本文分享自华为云社区《图解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 Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  2. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

  3. Spark学习之在集群上运行Spark

    一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...

  4. 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell

    Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...

  5. Spark学习之在集群上运行Spark(6)

    Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...

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

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

  7. Idea里面远程提交spark任务到yarn集群

    Idea里面远程提交spark任务到yarn集群 1.本地idea远程提交到yarn集群 2.运行过程中可能会遇到的问题 2.1首先需要把yarn-site.xml,core-site.xml,hdf ...

  8. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  9. HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)

    原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...

  10. hadoop+tachyon+spark的zybo cluster集群综合配置

    1.zybo cluster 架构简述: 1.1 zybo cluster 包含5块zybo 开发板组成一个集群,zybo的boot文件为digilent zybo reference design提 ...

随机推荐

  1. 【matplotlib 实战】--热力图

    热力图,是一种通过对色块着色来显示数据的统计图表.它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来.热力图通常用于显示大量数据点的密度.热点区域和趋势. 绘图时,一般较大的值由较深的颜色表示, ...

  2. 简述location规则优先级-实现域名跳转-不同语言-终端跳转-错误页面返回首页-腾讯公益首页

    1.简述location的常见规则优先级,并且逐个验证: = :精确匹配(必须全部相等) #精准匹配优先级最高 ~ :大小写敏感(正则表达式) #一般使用~*忽略大小写匹配 (正则表达式 有上下区分, ...

  3. 如何借助python第三方库存取不同应用程序的用户名、密码

    在之前的一系列文章中,小爬分享了很多用Pywin32.uiAutomation.sap Gui Script等技术实现应用程序或者Web网站(如SAP.Excel.outLook邮件系统.OA系统)的 ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (123)-- 算法导论10.4 4题

    四.用go语言,对于一个含 n个结点的任意有根树,写出一个 O(n)时间的过程,输出其所有关键字该树以左孩子右兄弟表示法存储. 文心一言: 在计算机科学中,左孩子右兄弟表示法是一种用于表示树状结构的方 ...

  5. nginx、rabbitmq、redis、zookeeper、zkui安装脚本

    nginx安装脚本 #!/bin/bash yum install -y wget pcre-devel openssl openssl-devel gcc ###安装perl### cd /usr/ ...

  6. .NET快速对接极光消息推送

    什么是消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息推送& ...

  7. JavaScript高级程序设计笔记03 语言基础

    语言基础 主要基于ES6. 一切都区分大小写.无论变量.函数名还是操作符 标识符 变量名.函数名.属性名.参数名 可由一个或多个字符组成: 第一个必须是字母._或者$: 其余的可以是字母._.$或者数 ...

  8. kubernetes container device interface (CDI)

    CDI 是什么? Container Device Interface (CDI) 是一个提议的标准,它定义了如何在容器运行时环境中向容器提供设备.这个提议的目的是使得设备供应商能够更容易地将其设备集 ...

  9. Windows10下的hexo搭建

    用hexo搭建个人博客 查看效果:慢蜗牛博客 目录 用hexo搭建个人博客 准备环境 Github Node.js和Git 连接Github 安装hexo 安装插件 部署 Hexo 到 GitHub ...

  10. IDEA安装与配置教程

    一.下载并安装IDEA 1.下载 1.官网: 下载 IntelliJ IDEA (这里以Windows系统为例,其他系统类似) 2.安装 1.下载完成后,直接点击安装包安装,即可. 2.开始安装,然后 ...