本课主题

  • Master HA 解析
  • Master HA 解析源码分享

[引言部份:你希望读者看完这篇博客后有那些启发、学到什么样的知识点]

更新中......

Master HA 解析

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

Spark Master HA on ZooKeeper 切換流程圖

Master HA 的四大方式

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


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

    readPersistedData 来获取恢复集群中的元数据

    现在去看看它的createdLeaderElectionAgent的方法

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

  5. NONE 的方式根本不需要持久化引擎,它为什么要搞一个BlackHoleEngine
  6. 对一些WorkerState状态为UNKNOWN 的话(Worker不响应),就把它删除掉,如果你是以集群方式运行的话,driver 失败话可以重新启动一下,最后把状态变回ALIVE,这里注意要加入--supervise这一个参数。

[总结部份]

更新中......

參考資料

资料来源来至 DT大数据梦工厂 大数据传奇行动 第29课:Master HA彻底解密

Spark源码图片取自于 Spark 1.6.0版本

最新文章

  1. ENode 1.0 - Saga的思想与实现
  2. 看来System.dll是没法剔除依赖了
  3. XMPP框架下微信项目总结(2)授权登陆/注销/注册/打印日志
  4. NSString(或者说是UILabel)加入 “行间距” 之后的 “高度”计算
  5. SQLServer2008新建链接服务器for Oracle
  6. Teamwork-Week3 职责划分及团队分数分配原则
  7. Introducing RecyclerView(一)
  8. 【转】(DT系列六)devicetree中数据和 struct device有什么关系
  9. 子查询有OR无法展开,改写成union
  10. SQL Server 中@@IDENTITY的用法
  11. C#中linq报“Character literal must contain exactly one character”的错误提示
  12. 设计模式 -- 责任链模式或者叫职责链模式(Chain of Responsibility(CoR))
  13. 爬虫初探--PHP
  14. AngularJS 作用域(Scope)
  15. range和xrange的区别
  16. drone的pipeline原理与代码分析
  17. input.file样式修改
  18. Newtonsoft.Json 序列化小写首字母
  19. VS 最近打开清理bat
  20. 使用nginx+docker配置https负载均衡

热门文章

  1. 安装phpnow服务[Apache_pn]提示失败的解决方法
  2. NS3网络仿真(10): 解析以太网帧
  3. Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy
  4. BIRT实现组内跨行计算
  5. 002Java概述
  6. junit初探
  7. css自动添加浏览器兼容前缀 autoprefixer设置
  8. 解决win7中防火墙的0x6D9问题的方法
  9. The Movie db (TMDB)的API申请
  10. ABP-Module