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集群模式也就搭建成功了