天天看點

Spark高可用叢集搭建

Spark高可用叢集介紹

Spark高可用叢集是基于ZooKeeper的。

Spark高可用叢集搭建

spark的主備切換過程需要做哪些工作?

 ①、zookeeper将備用master的狀态更改為alive。

 ②、備用master從zookeeper拉取中繼資料。

 ③、備用master向worker節點發送資訊,通知已經更換了master。

master主備切換過程中,能不能送出一個新的Application?

不能,因為此時舊的master已經挂掉了,而新的master還沒準備好(RECOVER)。

如果已經有一個Application已經在叢集中運作了,那麼此時進行主備切換,對這個Application有沒有影響?

沒有影響,spark是粗粒度的資源排程,在任務運作之前已經找master為Application申請好資源了,Application運作時已經不需要master了。

Spark高可用叢集搭建

高可用的spark叢集與spark叢集的搭建很相似,隻是修改一個配置檔案。以下步驟是在已經搭建好Spark叢集的情況下操作的:

1.進入spark安裝包的conf目錄下,修改spark-env.sh檔案。

SPARK_MASTER_IP=node01
SPARK_MASTER_PORT=7077
SPARK_WORKER_CORES=3
SPARK_WORKER_MEMORY=2g
SPARK_WORKER_DIR=/opt/software/spark/spark-1.6.3/work
SPARK_WORKER_INSTANCES=1
SPARK_MASTER_WEBUI_PORT=8888

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/spark-1106"
           

2.把配置好的spark-env.sh推送到其他節點。

scp -r spark-env.sh node02:`pwd`
scp -r spark-env.sh node03:`pwd`
scp -r spark-env.sh node04:`pwd`
           

3.選擇node02作為備用master節點,在node02節點把SPARK_MASTER_IP的值改為node02

4.在node02,node03,node04節點分别啟動zookeeper

Spark高可用叢集搭建

5.在node01啟動spark叢集

Spark高可用叢集搭建

6.在node02的spark的sbin目錄下啟動備用master

Spark高可用叢集搭建

7.通路 http://node01:8888/ 可以檢視Active Master節點WEBUI界面,通路 http://node02:8888/ 可以檢視Standby Master節點的WEBUI界面