一.情況描述
按照如下配置,使用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集群模式也就搭建成功了