Spark Standalone HA基本原理及部署

Spark Standalone HA基本原理

  • Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,会存在Master单点故障(SPOF)的问题。
  • 高可用HA(两种方案)
    • 基于文件系统的单点恢复(开发或测试环境)。
    • 基于zookeeper的Standby Masters(生产环境)。

Zookeeper Standby Masters

  • ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息,包括Worker, Driver和Application的信息都已经持久化到文件系统,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何的影响
  • 架构图如下所示:
    在这里插入图片描述
    在这里插入图片描述
  • 总的来说StandAlone HA的原理就是基于Zookeeper做状态的维护, 开启多个Master进程, 一个作为活跃,其它的作为备份,当活跃进程宕机,备份Master进行接管。

Spark Standalone HA部署

  • 基于之前部署的Spark Standalone群集,我们需要对一些配置文件进行修改。
  1. 先在spark-env.sh中, 注释掉SPARK_MASTER_HOST=node1。
  2. 添加以下内容:
# spark.deploy.recoveryMode 指定HA模式 基于Zookeeper实现
# 指定Zookeeper的连接地址
# 指定在Zookeeper中注册临时节点的路径
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
  1. spark-env.sh 分发到每一台服务器上
cd $SPARK_HOME/conf
scp spark-env.sh node2:`pwd`/
scp spark-env.sh node3:`pwd`/
  1. 停掉之前的群集
sbin/stop-all.sh
  1. 启动群集
# 在node1上 启动一个master 和全部worker
sbin/start-all.sh
# node2上启动一个备用的master进程
sbin/start-master.sh

node1网址:http://node1:8081/ 因为zk占用8080,所以顺延到8081端口
在这里插入图片描述

node2网址:http://node2:8082/ 因为zk占用8080,而worker占用8081,所以就顺延到8082了,具体可以在日志中查看
显示状态为:STANDBY
在这里插入图片描述

模拟故障切换

  1. 提交一个spark任务到当前ALIVE的master上
bin/spark-submit --master spark://node1:7077 /export/server/spark-3.2.0/examples/src/main/python/pi.py 1000
  1. 模拟故障切换
# node1 master的进程
kill -9  26822
  1. 观察node2节点的变化显示RECOVERING → ALIVE
    在这里插入图片描述
    在这里插入图片描述
  2. 重新启动node1的master之后发现node1的状态为STANDBY。
    在这里插入图片描述
    总结:HA模式下, 主备切换 不会影响到正在运行的程序,最大的影响是 会让它中断大约30秒左右。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值