要保证spark的高可用,只要保证Master高可用即可,Master是通过zookeeper来实现高可用。
本文是基于Spark集群安装 - standalone模式基础进行改造
利用ZooKeeper提供master选举和状态存储功能。你可以在你的集群里启动多个Master连接到同一个Zookeeper实例。其中的一台机器会被选举为master,剩下的将会运行在StandBy模式。如果master宕机,新的master会被选举出来并恢复状态,从而继续提供调度服务。整个恢复过程(从第一个master宕机开始)需要1-2分钟。注意,这只会影响恢复过程中提交的新作业,而在宕机之前提交的作业不会受影响。
zookeeper安装
省略
修改spark配置
vi $SPARK_HOME/conf/spark-env.sh
注释掉SPARK_MASTER_HOST
配置项,增加如下代码
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=lfg00:2181,lfg01:2181,lfg01:2181 -Dspark.deploy.zookeeper.dir=/spark"
-Dspark.deploy.recoverMode=ZOOKEEPER
代表发生故障使用zookeeper服务
-Dspark.depoly.zookeeper.url=lfg00:2181,lfg01:2181,lfg01:2181
主机名的名字
-Dspark.deploy.zookeeper.dir=/spark
spark要在zookeeper上写数据时的保存目录
分发配置到其它spark集群中的其它机器
cd $SPARK_HOME/conf
scp spark-env.sh hadoop@lfg02:`pwd`
scp spark-env.sh hadoop@lfg03:`pwd`
启动spark集群
先停止之前启动的spark集群
sh $SPARK_HOME/sbin/stop-all.sh
在一台机器启动集群
sh $SPARK_HOME/sbin/start-all.sh
另外,还需要在另外一台机器上单独启动spark master
ssh lfg02
sh $SPARK_HOME/sbin/start-master.sh
查看集群master状态
- 第一台启动的集群lfg01,其webui地址http://lfg01:8080/显示的状态为
Status: ALIVE
- 第二台启动master的lfg02,其webui地址http://lfg02:8080/显示的状态为
Status: STANDBY
测试
我们先杀掉lfg01的master,模拟master宕机
此时查看http://lfg02:8080/显示的状态,已经变为Status: ALIVE
,说明Master切换成功
至此,说明spark master高可用已配置好!
网友评论