spark配置双master时一直处于standby的情况


一.情况描述

按照如下配置,使用zookeeper监听

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark"

然后node2执行start-master.sh,预想的结果是node1处于活跃状态,node2处于备用状态,结果是两个都是standby状态

 于是,在网上找了许多资料,发现都无法解决,于是查看日志:

发现日志里面频繁报出这几个错误

 于是去网上查,发现网上说是zookeeper的错,但是我之前安装了hadoop、hive、hbase都能正常使用,应该不是zookeeper配置的错,但是后来又看到一个

 这里说的是版本不匹配,但是我理解错了我一直以为curator是zookeeper里面的,但其实是在spark里的

所有有两个解决方案


二.解决方案

1.更换spark版本

我的spark版本下载的是3.2.0,是最新版的,zookeeper是3.4.9的,也正是因为spark是最新版的,zookeeper的版本没有跟上(官网已更新到3.7.0),所以更换spark版本,那为啥不更换zookeeper吗,其实也可以更换zookeeper的版本,但是spark3.2.0属于不稳定的版本,3.0.x系列属于最稳定的版本,加之之前都配置好了,不好修改zookeeper,所以更换spark版本,正好把借此把spark换成稳定版本。

2.更换zookeeper版本

根据我这的情况,spark3.2.0或者以后朝上的,zookeeper至少要3.4.9以上,因为我没有尝试修改zookeeper版本,所以尽量使用3.5或者3.6以上的zookeeper版本吧


三.运行结果

 杀掉node1的master

kill -9 进程

查看情况:

node1无法进入:

 间隔几秒钟后查看node2,因为需要有超时时间,检测节点是否宕机:

发现node2已经成为master,接替了node1的工作,且处于活跃状态。

到此,Standalone-HA集群模式也就搭建成功了