本文使用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。