SPARK MASTER 高HA可用部署

时间:2022-04-14 16:24:52

关于HA高可用部署方式,Spark提供了两种方案:

  • 基于文件系统的单点恢复(Single-Node Recovery with Local File system)

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

  • 基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)

  用于生产模式。其基本原理是通过zookeeper来选举一个Master,其他的Master处于Standby状态。

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

 

以上高可用部署配置设计以下参数:

spark.deploy.recoveryMode
用于设置使用哪种恢复模式(FILESYSTEM|ZOOKEEPER).

使用FILESYSTEM时(文件系统单点恢复),需搭配以下参数:

spark.deploy.recoveryDirectory
Spark保存恢复状态的目录

使用ZOOKEEPER时,需搭配以下参数:

spark.deploy.zookeeper.url
The ZooKeeper cluster url (e.g., 192.168.1.100:2181,192.168.1.101:2181).

spark.deploy.zookeeper.dir
The directory in
ZooKeeper to store recovery state (default: /spark).

修改配置最简单方式为在$SPARK_HOME/conf/spark-env.sh文件中增加

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/data/spark/recovery"

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=n1:2181,n2:2181,n3:2181 -Dspark.deploy.zookeeper.dir=/temp/spark"

 

使用zookeeper方式时的注意事项

  • 使用zookeeper方式时,切换期间新任务提交可能报错,但是已运行任务无影响。
  • 任务提交指定master地址时,需使用类似如下格式:spark://n1:7077,n2:7077,n3:7077

 

参考资料

http://www.cnblogs.com/hseagle/p/3673147.html

https://spark.apache.org/docs/0.9.0/spark-standalone.html#standby-masters-with-zookeeper