Spark HA

目录

  默认情况下,standalone cluster manager对于worker节点的失败是具有容错性的。然而,调度器是依托于Master进程来做出调度决策的,这就会造成单点故障:如果Master挂掉了,就没法提交新的应用程序了。利用ZooKeeper实现Spark的HA。
  使用ZooKeeper来提供leader选举以及一些状态存储,可以在集群中启动多个Master进程,让它们连接到ZooKeeper实例。其中一个Master进程会被选举为leader,其他的Master会被指定为standby模式。如果当前的leader Master进程挂掉了,其他的standby Master会被选举,从而恢复作业调度。

配置
如果要启用这个恢复模式,需要在spark-env.sh文件中,设置SPARK_DAEMON_JAVA_OPTS选项:

spark.deploy.recoveryMode		# 设置为ZOOKEEPER来启用standby master恢复模式(默认为NONE)
spark.deploy.zookeeper.url		# zookeeper集群url(举例来说,192.168.75.101:2181,192.168.75.102:2181)
spark.deploy.zookeeper.dir		# zookeeper中用来存储恢复状态的目录(默认是/spark)

  在启动一个ZooKeeper集群之后,启用高可用性是很直接的。简单地在多个节点上启动多个Master进程并且给它们相同的ZooKeeper配置(ZooKeeper url和目录),Master就可以被动态加入Master集群并可以在任何时间被移除掉。为了调度新的应用程序或者向集群中添加worker节点,它们需要知道当前leader Master的ip地址,这可以通过传递一个Master列表来完成。例如:我们可以将SparkContext连接的地址指向spark://host1:port1,host2:port2,这就会导致SparkContext尝试去注册所有的Master,如果host1挂掉了,那么配置还是正确的,因为会找到新的leader master,也就是host2。
  当一个应用程序启动的时候或者worker需要被找到并且注册到当前的leader Master的时候。一旦它成功注册了,就被保存在ZooKeeper中了。如果故障发生了,new leader Master会去联系所有的之前注册过的应用程序和worker并且通知它们Master的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值