Master HA:
1.在生产环境下:
一般情况下使用ZooKeeper作为HA,且Master一般都是一个active和两个standby,ZooKeeper会自动管理Masters的切换。
2.采用ZooKeeper作为HA的时候,ZooKeeper会负责保存整个Spark集群运行的元数据:Workers、Drivers、Applications、Executors
3.ZooKeeper遇到当前Active级别的Master出现故障时会从Standby Masters选择出一台作为Active Master,但是要注意:被选举后到成为真正的Active Master之间要从ZooKeeper中获取集群当前运行状态的元数据信息进行恢复
4.在Master切换的过程中,所有的已经在运行的程序皆正常运行!因为Spark Application在运行前就已经通过 Cluster Manager获得了计算资源,所以在运行时Job本身的调度和处理和Master是没有任何关系的。
5.在Master的切换过程中唯一的影响是不能提交新的Job:一方面不能够提交新的应用程序给集群,因为只有Active Manager才能接收新的程序的提交请求;另一方面,已经运行的程序也不能够因为Action 操作触发新的Job的提交请求。
Master HA的四大方式:
1. ZooKeeper,自动管理Master
2. FILESYSTEM,元数据信息保存在本地文件,Master出现故障后,需要手动重新启动,机器启动后会立即成为Active级别的Master,来对外提供服务(接收应用程序提交的请求、接收新的Job运行的请求)
3. CUSTOM,允许用户自动自定义Master HA的实现,这对于高级用户特别有用
4. NONE,默认情况,当下载安装Spark集群后,就是采用这个方式,该方式不会持久化集群的数据,Master启动后立即管理集群
PersistenceEngine中有一个重要的方法persist来持久化数据。
FIFLSYSTEM和NONE
均是采用MonarchyEletionAgent的方式来完成Leader的选举的。实现的方式是,直接将传入的Master作为Leader。