Spark集群安装 - Master高可用

要保证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=/sparkspark要在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高可用已配置好!

推荐阅读更多精彩内容