## 浅谈Master的HA ##
[睡着的水-hzjs-2016.8.21]
一、Master 的HA解析
---1、生产环境下一般采用Zookeeper做HA,且建议为3台Master , Zookeeper会自动管理Master的切换;
---2、采用Zookeeper做HA的时候,Zookeeper会负责保存整个Spark集群运行时候的元数据:Workers \ Driver \ Applications \Executors;
---3、Zookeeper 遇到当前Active级别的Master出现故障的时候会从Standby Masters 中选取出一台作为Active Master,但是要注意:被选举后到成为真正的Active Master 之间需要从Zookeeper中获取集群当前运行状态的元数据信息并进行恢复;
---4、在Master 切换的过程中,所有的已经在运行的程序皆正常运行!因为SparkApplication在运行前就已经通过Cluster Manager 获得了计算资源,所以在运行时Job 本省的调度与处理和Master是没有关系的;
---5、在Master的切换过程中唯一的影响是不能提交新的Job;一方面不能够提交新的应用程序给集群,因为只有Active Master 才能接收新的程序的提交请求;另外一方面,已经运行的程序中也不能因为Action操作触发新的Job的提交请求;
二、Master 的四种方式
---1、四种方式分别是:Zookeeper \ FileSystem \ Custom \ None
---2、需要说明的是:
a、Zookeeper 是自动管理Master
b、FileSystem 的方式在Master出现故障后需要手动重新启动机器,机器重启后会立即成为Active级别的Master来对外提供服务(接收应用程序的提交的请求、接收新的job 运行请求);
c、Custom 的方式是用来自定义的Master HA的实现。对于高级用户特别有用;
d、None 是默认的情况,当我们狭隘安装Spark 集群就是采用的这用方式,该方式不会持久化集群的数据,Master启动后会立即管理集群。