Master HA彻底解密
本课主题
- Master HA 解析
- Master HA 解析源码分享
Master HA 解析

- 生产环境下一般采用 ZooKeeper 做 HA,且建义为 3台 Master, ZooKeeper 会自动管理 Master 的切换
- 采用 ZooKeeper 做 HA 的时候,ZooKeeper 会负责保存整个 Spark 集群运行的元数据:所有 Worker 的信息, 所有 Driver 的信息, 应用程序的信息 和 所有Executor 的信息
- ZooKeeper 遇到当前Active 级别的Master 出现故障的时候从Standby Masters 中选取出一台作为Active , 但是要注意,被选举后到成为真正的Active Master 之间需要从ZooKeeper 中获取集群当前运行状态的元数据信息并进行恢复;
- 在 Master 切换的过程中,所有已经在运行的程序皆正常运行!因为 Spark Application 在运行前就已经通过 Cluster Manager 获得了计算资源 所以在运行时 Job 本身的调度和处理和 Master 是没有任何关系的!
- 在Master 的切换过程中唯一的影响是不能提交新的Job: 一方面不能提交新的应用程序给集群,因为只有Active Master 才能接受新的程序的提交请求;另外一方面,已经运行的程序也不能够因为Action 操作触发新的Job 的提交请求。
Spark Master HA on ZooKeeper 切換流程圖





Master HA 的四大方式
- Master HA 的四大方式:分別是 ZOOKEEPER,FILESYSTEM, CUSTOM, NONE;
- 需要说明的是:
- ZOOKEEPER 是自動管理 Master;
- FILESYSTEM 的方式在 Master 出现突障后需要手动启动机器,机器启动后会立即成为 Active 级别的 Master 来对外提供服务(接受应用程序提交的请求、接受新的 Job 运行的请求)
- CUSTOM 的方式允许用户自定义 Master HA 的实现,这对于高级用户特别有用;
- NONE,这是默应情况,当我们下载安装了 Spark 集群中就是采用这种方式,该方式不会持久化集群的数据, Driver, Application, Worker and Executor. Master 启动起立即管理集群;



- Persistence Engine 中有一个至关重要的方法 persists 来实现数据持久化

readPersistedData 来获取恢复集群中的元数据
现在去看看它的createdLeaderElectionAgent的方法

- FILESYSTEM 和 NONE 的方式均是采用 MonarchyLeaderAgent 的方式来完成 Leader的选举的,其实际实现是直接把传入的 Master 作为 Leader


- NONE 的方式根本不需要持久化引擎,它为什么要搞一个BlackHoleEngine

- 对一些WorkerState状态为UNKNOWN 的话(Worker不响应),就把它删除掉,如果你是以集群方式运行的话,driver 失败话可以重新启动一下,最后把状态变回ALIVE,这里注意要加入--supervise这一个参数。

[总结部份]
更新中......
Master HA彻底解密的更多相关文章
- [Spark内核] 第29课:Master HA彻底解密
本课主题 Master HA 解析 Master HA 解析源码分享 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... Master HA 解析 生产环境下一般 ...
- 【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- HBase Master HA高可用
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行. 所以这里要配置HBase高可用的话,只需要 ...
- 王家林 大数据Spark超经典视频链接全集[转]
压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan ...
- 一些推荐的spark/hadoop课程
为了分享给你们,也为自己. 感谢下面的老师们! 1.王家林DT大数据梦工厂的大数据IMF传奇行动课程 总的目录是: 第一阶段:Linux和Java零基础企业级实战 第二阶段:Hadoop和Hive零基 ...
- Spark 学习笔记大纲
Spark 内核 第28课:Spark天堂之门解密 (点击进入博客)从 SparkContext 创建3大核心对象开始到注册给 Master 这个过程中的源码鉴赏 第29课:Master HA彻底解密 ...
- 痞子衡嵌入式:SNVS Master Key仅在i.MXRT10xx Hab关闭时才能用于DCP加解密
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列中数据协处理器DCP使用SNVS Master Key加解密的注意事项. i.MXRT不仅仅是处理性能超强的MCU,也是 ...
- 微信小程序之用户数据解密(七)
[未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...
- [经验交流] Active-Active 方式设置 kubernetes master 多节点高可用
关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即: 通过 pacemaker 等软件使得某种 master 服务(apiserver ...
随机推荐
- eclipse 安装 scala
1.官网下载地址 http://scala-ide.org/download/current.html 目前最新的版本 http://download.scala-ide.org/sdk/lithiu ...
- django笔记-url
本文章只是用于学习方面的笔记,方便以后避免重复掉坑. 1.模板template的html文件可以根据url.py文件配置的name查找对应的url 2.在template的html文件里里面的url就 ...
- js 中的! 和 !! 的区别
Js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,1.!可将变量转换成boolean类型,null.undefined和空字符串取反都为false,其 ...
- 2.3 if switch for等流程控制
if条件中可以写多个语句,语句的作用域仅限于if,不可在if之外的地方使用 package main import ( "fmt" "io/ioutil" ) ...
- python学习13-类的约束 异常处理 日志
一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...
- google风格
复制一下代码即可: <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...
- intellij idea开发过程中遇到的问题
https://blog.csdn.net/wonder_dog/article/details/79289883
- C# 清空数组Array.Clear
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public ...
- bootstrap日历插件地址
http://www.bootcss.com/p/bootstrap-datetimepicker/
- ionic 开发当中,有一些常用的方法。
在开发项目的时候,有些常用的功能封装到一个类里. 以后要用的话,直接导入过来就可以用了,有一些方法是从网站复制过来的,有些方法是网上复制过来,然后自己修改了一下,标记一下吧! /** * ...