高可用原理
Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置,Master的高可用可以使用fileSystem(文件系统)和zookeeper(分布式协调服务)。
fileSystem只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。
zookeeper有选举和存储功能,可以存储Master的元素据信息,使用zookeeper搭建的Master高可用,当Master挂掉时,备用的Master会自动切换,推荐使用这种方式搭建Master的HA。
![](https://img.haomeiwen.com/i17789247/45f28080cbdc2c3e.png)
高可用搭建
1.在Spark Master节点上配置主Master,配置spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181
-Dspark.deploy.zookeeper.dir=/sparkmaster"
2.发送到其他worker节点上
3.找一台节点(非主Master节点)配置备用 Master,修改spark-env.sh配置
export SPARK_MASTER_HOST=node02
4.启动集群之前启动zookeeper集群
5.启动spark Standalone集群,启动备用Master
#node01
[root@node04 sbin] ./start-all.sh
#node02
[root@node04 sbin] ./start-master.sh
6.打开主Master和备用Master WebUI页面,观察状态
注意点
- 主备切换过程中不能提交Application。
- 主备切换过程中不影响已经在集群中运行的Application。因为Spark是粗粒度资源调度。
测试验证
提交SparkPi程序,kill主Master观察现象。
[root@node01 bin]./spark-submit
--master spark://node01:7077,node02:7077
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
网友评论