Spark高可用部署

  • 1、高可用部署说明
  • 1 、基于文件系统的单点恢复(Single-Node Recovery with Local File System)。
  • 2、基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)。
  • 2、基于zookeeper的Spark HA高可用集群部署
  • 2.1 停止Spark进程,启动zookeeper进程。
  • 2.2 配置文件更改


1、高可用部署说明

Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题。
如何解决这个单点故障的问题,Spark提供了两种方案:

1 、基于文件系统的单点恢复(Single-Node Recovery with Local File System)。

主要用于开发或测试环境
当spark提供目录保存spark Application和worker的注册信息,并将他们的恢复状态写入该目录中,这时,一旦Master发生故障,就可以通过重新启动Master进程(sbin/start-master.sh),恢复已运行的spark Application和worker的注册信息。

2、基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)。

主要用于生产模式
其基本原理是通过zookeeper来选举一个Master,其他的Master处于Standby状态。将spark集群连接到同一个ZooKeeper实例并启动多个Master,利用zookeeper提供的选举和状态保存功能,可以使一个Master被选举成活着的master,而其他Master处于Standby状态。
如果现任Master死去,另一个Master会通过选举产生,并恢复到旧的Master状态,然后恢复调度。整个恢复过程可能要1-2分钟。

2、基于zookeeper的Spark HA高可用集群部署

该HA方案首先需要搭建一个zookeeper集群,然后启动zooKeeper集群,最后在不同节点上启动Master。具体配置如下:

2.1 停止Spark进程,启动zookeeper进程。
2.2 配置文件更改
vim spark-env.sh

export SPARK_MASTER_HOST=node01 进行注释。
同时在spark-env.sh中添加SPARK_DAEMON_JAVA_OPTS,内容如下:

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181  -Dspark.deploy.zookeeper.dir=/spark"

spark on yarn高可用搭建 spark高可用集群部署_HA

参数说明
spark.deploy.recoveryMode:恢复模式(Master重新启动的模式)
有三种:(1)ZooKeeper (2) FileSystem (3)NONE

spark.deploy.zookeeper.url:ZooKeeper的Server地址

spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。包括Worker,Driver和Application。

注意:
在普通模式下启动spark集群,只需要在主机上面执行 start-all.sh 就可以了。
在高可用模式下启动spark集群,先需要在任意一台节点上启动 start-all.sh命令。然后在另外一台节点上单独启动master。命令start-master.sh

1.在任意一台节点启动start-all.sh

spark on yarn高可用搭建 spark高可用集群部署_spark_02


2.在另外一台启动master

spark on yarn高可用搭建 spark高可用集群部署_高可用部署_03


3. 观察集群状态

由于先启动的node01,所以这时node01的master状态是alive。后启动的node02的master,node02的master的状态为StandBy。如图所示:

spark on yarn高可用搭建 spark高可用集群部署_zookeeper_04

spark on yarn高可用搭建 spark高可用集群部署_HA_05

当停掉node01的master后(或者意外宕机后),过一分钟左右,可以发现node02 的master状态变为Alive.

spark on yarn高可用搭建 spark高可用集群部署_zookeeper_06