Spark HA高可用部署
1.說明:
Spark Standalone 叢集是Master--Slaves架構的叢集模式,和大部分的Master--Slaves 結構叢集一樣,存在著Master單點故障的問題。Spark提供了兩種解決方案去解決這個單點故障的問題;
方案一:基於檔案系統的單點恢復
主要用於開發或測試環境,spark提供目錄儲存spark Application 和worker的註冊資訊,並將他們的恢復狀態寫入該目錄中,這時,一旦Master發生故障,就可以通過重新啟動Master程序(sbin/strart--master.sh),恢復已執行的spark Application 和 worker 的註冊資訊。(簡單說就是需要自己親自再去啟動master)
方案二:基於zookeeper的 Standby Masters
主要用於生產模式。其基本原理是通過zookeeper來選舉一個Master,其他的Master處於Standby狀態。將spark叢集連線到同一個zookeeper例項並啟動多個Master,利用zookeeper提供的選舉和狀態儲存功能,可以使一個Master被選舉成活著的master,而其他Master處於Standby狀態。如果現任Master宕機,另一個Master會通過選舉產生並恢復到舊的Master狀態,然後恢復狀態。整個恢復過程可能要1-2分鐘。
2.基於zookeeper的spark HA 高可用叢集部署
該HA方案使用起來很簡單,首先需要搭建一個zookeeper叢集然後啟動zookeeper叢集,最後在不同節點上啟動Master。具體配置如下:
(1)vim spark-env.sh
註釋掉export SPARK_MASTER_HOST=hdp--node--01
(2)在spark-env.sh新增SPARK_DAEMON_JAVA_OPTS,內容如下:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER - Dspark.deploy.zookeeper.url=hdp-node-01:2181,hdp-node-02:2181,hdp-node-03:2181 -Dspark.deploy.zookeeper.dir=/spark"
引數說明:
1.spark.deploy.recoveryMode:恢復模式(Master 重新啟動的模式):有三種:(1):zookeeper(2):FileSystem(3):none
2.spark.deploy.zookeeper.url:zookeeper的server地址
3.spark.deploy.zookeeper.dir:儲存叢集元資料資訊的檔案,目錄。包括Worker,Driver和Application。
注意:
在普通模式下啟動spark叢集,只需要在主機上面執行start-all.sh就可以了。
在高可用模式下啟動spark叢集,現需要在任意一臺節點上啟動start-all,然後在另外一臺節點上單獨啟動master。命令:start-master.sh