Spark Standalone模式 高可用部署

DB樂之者發表於2020-11-12

 

本文使用Spark的版本為:spark-2.4.0-bin-hadoop2.7.tgz。

spark的叢集採用3臺機器進行搭建,機器分別是server01,server02,server03。

其中:server01,server02設定為Master,server01,server02,server03為Worker。

1.Spark

下載地址:

http://spark.apache.org/downloads.html

選擇對應的版本進行下載就好,我這裡下載的版本是:spark-2.4.0-bin-hadoop2.7.tgz。

2.上傳及解壓

2.1 下載到本地後,上傳到Linux的虛擬機器上

scp spark-2.4.0-bin-hadoop2.7.tgz hadoop@server01:/hadoop

 

2.2 解壓

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz

2.3 重新命名

mv spark-2.4.0-bin-hadoop2.7 spark

3.配置環境

進入spark/conf目錄

3.1 複製配置檔案

cp slaves.template slaves

cp spark-env.sh.template spark-env.sh

3.2 修改slaves配置檔案

spark叢集的worker conf配置 slaves

server01

server02

server03

 

 

 

 

3.3 修改spark-env.sh配置檔案

# java環境變數

export JAVA_HOME=/usr/local/java

#spark home

export SPARK_HOME=/export/opt/spark/spark2.4.0

# spark叢集master程式主機host

export SPARK_MASTER_HOST=server01

# 配置zk 此處可以獨立配置zk list,逗號分隔

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=xxx.xxx.xxx.xxx:2181, xxx.xxx.xxx.xxx:2181……"

 

如下圖

 

3.4 下發到server02和server03機器上

scp -r /hadoop/spark hadoop@server02:/hadoop

scp -r /hadoop/spark hadoop@server03:/hadoop

 

3.5 修改server02機器上的spark-env.sh的SPARK_MASTER_HOST引數資訊

# 增加備用master主機,改為server02,將自己設定為master(備用)

export SPARK_MASTER_HOST=server02

3.6 配置環境變數

給server01,server02,server03機器上配置spark的環境變數

export SPARK_HOME=/export/opt/spark/spark2.4.0

export PATH=$PATH:${SPARK_HOME}/bin:${SPARK_HOME}/sbin

#使配置環境生效

source /etc/profile

 

4. 啟動Spark叢集

在server01機器上,進入spark目錄

4.1 分別啟動master和slaves程式

# 啟動master程式

sbin/start-master.sh

# 啟動3個worker程式,也可以每個機器獨立啟動需要輸入兩個master地址

sbin/start-slaves.sh

 

jps檢視程式1有既有master又有Worker,2,3只有Worker

 

4.2 直接使用start-all.sh啟動

sbin/start-all.sh

4.3 手動啟動server02機器上的master程式

進入spark目錄

sbin/start-master.sh

我們可以使用stop-all.sh殺死spark的程式

sbin/stop-all.sh

web頁面展示

在瀏覽器中輸入

server01:8080

Status:ALIVE 說明master為主Master

server02:8080

 

 總結

  部署完成後可以嘗試kill掉1的master,然後需要等幾分鐘後會重啟備用master,此時備用切換為主。

  另外如果application被殺掉或者jvm出現問題,還可以通過增加引數 --supervise(需要安裝,pip install supervise)可以重新啟動application。

相關文章