1. 程式人生 > >搭建Spark高可用叢集

搭建Spark高可用叢集

通過zookeeper搭建高可用spark叢集
1、需要搭建一個zk叢集
2、配置檔案修改(spark-env.sh
註釋掉

export SPARK_MASTER_HOST=hdp-node-01

新增 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"

引數說明:

spark.deploy.recoveryMode:恢復模式(Master 重新啟動的模式)有三種:(1)ZooKeeper (2) FileSystem (3)NONE
spark.deploy.zookeeper.url:ZooKeeper 的 Server 地址
spark.deploy.zookeeper.dir:儲存叢集元資料資訊的檔案、目錄。包括 Worker,Driver 和 Application

3、啟動zk叢集
4、在一臺節點上啟動spark叢集

start-all.sh

5、在另一臺節點單獨啟動master

start-master.sh

理論知識:

Spark Standalone 叢集是 Master-Slaves 架構的叢集模式,和大部分的
Master-Slaves 結構叢集一樣,存在著 Master 單點故障的問題。如何解決這個
單點故障的問題,Spark 提供了兩種方案:
(1)基 於 文 件 系 統 的 單 點 恢 復 (Single-Node Recovery with Local File
System)。
主要用於開發或測試環境。當 spark 提供目錄儲存 spark Application
和 worker 的註冊資訊,並將他們的恢復狀態寫入該目錄中,這時,一旦 Master
發生故障,就可以通過重新啟動 Master 程序(sbin/start-master.sh),恢復
已執行的 spark Application 和 worker 的註冊資訊。
(2)基於 zookeeper 的 Standby Masters

(Standby Masters with ZooKeeper)。
用於生產模式。其基本原理是通過 zookeeper 來選舉一個 Master,其他
的 Master 處於 Standby 狀態。將 spark 叢集連線到同一個 ZooKeeper 例項並啟
動多個 Master,利用 zookeeper 提供的選舉和狀態儲存功能,可以使一個 Master
被選舉成活著的 master,而其他 Master 處於 Standby 狀態。如果現任 Master
死去,另一個 Master 會通過選舉產生,並恢復到舊的 Master 狀態,然後恢復調
度。整個恢復過程可能要 1-2 分鐘。