[Spark内核] 第29课: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这一个参数。
[总结部份]
更新中......
參考資料
资料来源来至 DT大数据梦工厂 大数据传奇行动 第29课:Master HA彻底解密
Spark源码图片取自于 Spark 1.6.0版本
[Spark内核] 第29课:Master HA彻底解密的更多相关文章
- [Spark内核] 第40课:CacheManager彻底解密:CacheManager运行原理流程图和源码详解
本课主题 CacheManager 运行原理图 CacheManager 源码解析 CacheManager 运行原理图 [下图是CacheManager的运行原理图] 首先 RDD 是通过 iter ...
- 【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 ...
- Master HA彻底解密
本课主题 Master HA 解析 Master HA 解析源码分享 Master HA 解析 生产环境下一般采用 ZooKeeper 做 HA,且建义为 3台 Master, ZooKeeper 会 ...
- [Spark内核] 第30课:Master的注册机制和状态管理解密
本課主題 Master 接收 Worker, Driver, Application Master 处理 Driver 狀态变换 Master 处理 Executor 狀态变换 [引言部份:你希望读者 ...
- [Spark内核] 第38课:BlockManager架构原理、运行流程图和源码解密
本课主题 BlockManager 运行實例 BlockManager 原理流程图 BlockManager 源码解析 引言 BlockManager 是管理整个Spark运行时的数据读写的,当然也包 ...
- [Spark内核] 第28课:Spark天堂之门解密
本課主題 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 我说的 Spark 天堂之门就是SparkContext,这篇文章会从 SparkCont ...
- [Spark内核] 第32课:Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
本課主題 Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 [引言部份:你希望读者 ...
- [Spark内核] 第31课:Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
本課主題 Master 资源调度的源码鉴赏 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... 资源调度管理 任务调度与资源是通过 DAGScheduler.Ta ...
- [Spark内核] 第33课:Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
本課主題 Spark Executor 工作原理图 ExecutorBackend 注册源码鉴赏和 Executor 实例化内幕 Executor 具体是如何工作的 [引言部份:你希望读者看完这篇博客 ...
随机推荐
- java多线程核心技术——第四章总结
第一节使用ReentrantLock类 1.1使用ReentrantLock实现同步:测试1 1.2使用ReentrantLock实现同步:测试2 1.3使用Condition实现等待/同步错误用法与 ...
- 【最短路】 ZOJ 1544 Currency Exchange 推断负圈
给出 N 种货币 M 条兑换关系 開始时全部的货币S 和有X 块钱 接下来M条关系 A B W1 W2 W3 W4 表示 A->B 所需的手续费为W2块钱 汇率为W1 B->A 所需的手 ...
- libgdx3D第三讲-场景载入
第三讲 场景载入 Loading a scene with LibGDX 网易云地址:id=442771fd5cc6ce8cf9fd30b838a76343&type=note" s ...
- Java中string 创建对象时 “”和null的差别
null和""的差别 问题一: null和""的差别 String s=null; string.trim()就会抛出为空的exception String s ...
- 游戏AI-行为树理论及实现
从上古卷轴中形形色色的人物,到NBA2K中挥洒汗水的球员,从使命召唤中诡计多端的敌人,到刺客信条中栩栩如生的人群.游戏AI几乎存在于游戏中的每个角落,默默构建出一个令人神往的庞大游戏世界. 那么这些复 ...
- mysql主从备份及常见问题处理
1.mysql主从备份基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新 ...
- Axure学习笔记(一)
Axture是一种快速制作原型的工具,在产品经理和体验设计师之中非常流行,不过现在产品经理比较难找,所以我只好上阵研究了一下. 经过几天的研究,看了小楼老师的一些视频,看了一些文档,做了 ...
- 文件系统常用命令df、du、fsck、dumpe2fs
df 查看文件系统 [root@localhost ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda5 16558080 1337676 15220404 9% / de ...
- ecshop中的$user对象
ecshop的程序中,有个对象:$user,它是用来处理用户信息的.比如登录.注册,还有就是用来和第三方管理通讯和共享资源的.在user.php中,有一条$user->login($userna ...
- spring-struts2-mybatis-maven 转账开发记录
最近写一个转账需求向外提供接口,用的是spring+struts2+maven 方式,数据库是oracle.我先新建maven类,然后引入spring相关jar包和mybatis包,配置s ...