手绘流程图讲解spark是如何实现集群的高可用
本文分享自华为云社区《图解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是如何实现集群的高可用相关推荐
- spark 提交任务到集群
spark 提交任务到集群 链接 posted on 2018-07-11 15:46 luoganttcc 阅读(...) 评论(...) 编辑 收藏
- Spark自带的集群模式(Standalone),Spark/Spark-ha集群搭建
1.Spark自带的集群模式 对于Spark自带的集群模式,Spark要先启动一个老大(Master),然后老大Master和各个小弟(Worker)进行通信,其中真正干活的是Worker下的Exec ...
- spark之12:集群模式概述
spark之12:集群模式概述 @(SPARK)[spark, 大数据] 英文原文地址:https://spark.apache.org/docs/latest/cluster-overview.ht ...
- 在local模式下的spark程序打包到集群上运行
一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...
- spark内核揭秘-02-spark集群概览
2019独角兽企业重金招聘Python工程师标准>>> Spark集群预览: 官方文档对spark集群的初步描述如下,这是一个典型的主从结构: 官方文档对spark集群中的一些关键点 ...
- Spark基础学习笔记05:搭建Spark Standalone模式的集群
文章目录 零.本讲学习目标 一.Spark集群拓扑 (一)集群拓扑 (二)集群角色分配 二.搭建集群 (一)私有云上创建三台虚拟机 (二)利用SecureCRT登录三台虚拟机 1.登录master虚拟 ...
- Spark: Structured JDBC 方式访问远程的高可用HA的HIVE
1. 背景 Spark: Structured JDBC 方式访问远程的高可用HA的HIVE,hive是看高可用的,连接信息如下 jdbc:hive2://xx.cdh1.test.dtwave.in ...
- spark 安装单机版和集群
本文介绍安装mac单机版的spark,和spark 集群安装 分以下步骤 安装scala 下载spark 压缩包并解压 修改spark的配置文件 配置环境变量 验证安装情况 安装Scala mac安装 ...
- 本地提交spark_Spark在Windows下运行,本地提交spark到远程yarn集群
[问题]Spark在windows能跑集群模式吗? 我认为是可以的,但是需要详细了解cmd命令行的写法.目前win下跑spark的单机模式是没有问题的. [关键点]spark启动机制容易被window ...
最新文章
- 更新了朋友圈微博动态,好友何时会点赞评论?
- Layer 2 Tunneling Protocol
- MSSql存储过程高效应用
- Teams Developer Portal介绍
- MySQL学习笔记_1_MySQL数据库管理系统概述
- ssis 计划任务_SSIS Hadoop连接管理器和相关任务
- 【docker】使用云服务器运行docker时无法访问宿主机的映射端口
- arm9 adc及触摸屏
- 基于RV1126平台imx291分析 --- 统计已注册的设备信息
- 机械硬盘 与 固态硬盘SSD
- ImportError: CuPy is not correctly installed解决方法
- 中文翻唱日语歌曲大全
- Unity文件转移出现的粉红色材质的处理方法
- YOLO ZOO:YOU ONLY LOOK ONCE ZOO
- 企业固定资产标签粘贴规范
- 勒索病毒2019年常见的后缀有ITLOCK/AOL/VC/phobos/ETH/x3m/qwex/H
- Linux摄像头UVC驱动第五篇--启动传输之设置摄像头参数
- 国外众测之密码找回漏洞
- IntelliJ IDEA之高效插件让你的代码迸发火花-不再下午犯困
- springmvc拦截器 绝对路径