spark的HA配置之recoveryMode模式

        默认情况下,Standalone的Spark集群是Master-Slaves架构的集群模式,由一台master来调度资源,这就和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题。如何解决这个单点故障的问题呢?Spark提供了两种方案:基于文件系统的单点恢复(Single-Node Recovery with Local Filesystem)和基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)。其中ZooKeeper是生产环境下的最佳选择。

  • 用ZooKeeper的备用master

        ZooKeeper提供了一个Leader Election机制,利用这个机制你可以在集群中开启多个master并使它们都注册到ZooKeeper实例,ZooKeeper会管理使其中只有一个是Active的,其他的都是Standby的,Active状态的master可以提供服务,standby状态的则不可以。ZooKeeper保存了集群的状态信息,该信息包括所有的Worker,Driver 和Application。当Active的Master出现故障时,ZooKeeper会从其他standby的master中选举出一台,然后该新选举出来的master会恢复挂掉了的master的状态信息,之后该Master就可以正常提供调度服务。整个恢复过程只需要1到2分钟。需要注意的是,在这1到2分钟内,只会影响新程序的提交,那些在master崩溃时已经运行在集群中的程序并不会受影响。

配置
为了开启这个恢复模式,你可以用下面的属性在spark-env中设置SPARK_DAEMON_JAVA_OPTS。

System propertyMeaning
Dspark.deploy.recoveryMode设置ZOOKEEPER去启动备用master模式(默认为none)
spark.deploy.zookeeper.urlzookeeper集群url(如192.168.1.100:2181,192.168.1.101:2181)
spark.deploy.zookeeper.dirzookeeper保存恢复状态的目录(默认是/spark)

可能的陷阱:如果你在集群中有多个masters,但是没有用zookeeper正确的配置这些masters,这些masters不会发现彼此,会认为它们都是leaders。这将会造成一个不健康的集群状态(因为所有的master都会独立的调度)。

列如:

export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=HDP245:2181,HDP246:2181,HDP247:2181
-Dspark.deploy.zookeeper.dir=/spark"

在另一个节点上,启动新的master

  • 用本地文件系统做单节点恢复

        zookeeper是生产环境下最好的选择,但是如果你想在master死掉后重启它,FILESYSTEM模式可以解决。当应用程序和worker注册,它们拥有足够的状态写入提供的目录,以至于在重启master 进程时它们能够恢复。

配置
为了开启这个恢复模式,你可以用下面的属性在spark-env中设置SPARK_DAEMON_JAVA_OPTS。

System propertyMeaning
spark.deploy.recoveryMode设置为FILESYSTEM开启单节点恢复模式(默认为none)
spark.deploy.recoveryDirectory用来恢复状态的目录
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值