1.Master 的高可用原理
Standalone 集群只有一个 Master,如果 Master 挂了就无法提交应用 程序,需要给 Master 进行高可用配置,Master 的高可用可以使用 fileSystem(文件系统)和 zookeeper(分布式协调服务)。
fileSystem 只有存储功能,可以存储 Master 的元数据信息,用 fileSystem 搭建的 Master 高可用,在 Master 失败时,需要我们手动 启动另外的备用 Master,这种方式不推荐使用。
zookeeper 有选举和存储功能,可以存储 Master 的元素据信息,使用 zookeeper 搭建的 Master 高可用,当 Master 挂掉时,备用的 Master 会自动切换,推荐使用这种方式搭建 Master 的 HA。
2.Master 高可用搭建
- 在 Spark Master 节点上配置主 Master,配置 spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=node2:2181,node3:2181,node4:2181
-Dspark.deploy.zookeeper.dir=/sparkmaster"
2. 发送到其他 worker 节点上
scp spark-env.sh node2:`pwd`
scp spark-env.sh node3:`pwd`
- 找一台节点(非主 Master 节点)配置备用 Master,修改 spark- env.sh 配置节点上的 MasterIP
注意:启动集群之前启动 zookeeper 集群
在启动 spark Standalone 集群,启动备用 Master
node1启动 spark Standalone 集群
[root@node1 sbin]# ./start-all.sh
node2启动备用 Master
[root@node2 sbin]# ./start-master.sh
- 打开主 Master 和备用 Master WebUI 页面,观察状态。
3.高可用演示
- 杀死node1上的 ALIVE master
- 查看node2上的standby master
注意:
- 主备切换过程中不能提交 Application。
- 主备切换过程中不影响已经在集群中运行的 Application。因为 Spark 是粗粒度资源调度。