1. 程式人生 > 實用技巧 >Spark--Standalone部署模式

Spark--Standalone部署模式

Standalone部署模式

獨立部署模式,自身除了計算,也負責資源的排程。

叢集規劃

hadoop101 hadoop102 hadoop103
Spark Worker(Master) Worker Worker

安裝檔案

spark-3.0.1-bin-hadoop2.7.tgz

將其解壓縮

tar -zxvf spark-3.0.1-bin-hadoop2.7.tgz -C /opt/module

修改配置檔案

(1)進入到解壓縮之後對應檔案的conf資料夾下,修改salves.template檔名為slaves

mv salves.template salves

(2)修改slaves檔案,新增worker節點

hadoop101
hadoop102
hadoop103

(3)修改spark-env.sh.template檔名為spark-env.sh

mv spark-env.sh.template spark-env.sh

(4)修改spark-env.sh檔案,新增Java的環境變數,設定叢集的Master節點

export JAVA_HOME=/opt/module/jdk1.8.0_144 
SPARK_MASTER_HOST=hadoop101 
SPARK_MASTER_PORT=7077

7077埠是spark叢集內部通訊的埠

(5)分發當前spark的安裝目錄

xsync spark

啟動叢集

(1)在spark的安裝目錄下執行啟動指令碼命令:

sbin/start-all.sh

(2)檢視三臺伺服器的程序資訊

xcall jps

(3)檢視Master資源監控的Web介面

http://hadoop101:8080

提交測試應用

spark自帶了用於測試的樣例應用,已經打包成了Jar包,現在拿來測試

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10

引數說明:

--class 表示要執行程式的主類

--master spark://hadoop101:7077 獨立部署模式,連線到Spark叢集,地址為master地址

spark-examples_2.12-3.0.1.jar 執行類所在的jar包

數字10 表示程式的入口引數,用於設定當前應用的任務數量

配置歷史服務

配置歷史服務是為了能夠記錄任務的執行情況,以便於檢視。

(1)修改spark-defaults.conf.template檔名為spark-defaults.conf

mv spark-defaults.conf.template spark-defaults.conf

(2)修改spark-defaults.conf檔案,新增日誌儲存路徑資訊

spark.eventLog.enabled  true
spark.eventLog.dir  hdfs://hadoop101:9000/directory

注意:需要啟動hadoop叢集,HDFS上的directory目錄需要提前存在

sbin/start-dfs.sh
hadoop fs -mkdir /directory

(3)修改spark-env.sh檔案,新增日誌配置

export SPARK_HISTORY_OPTS=" 
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop101:9000/directory 
-Dspark.history.retainedApplications=30"

引數含義:

  • 引數1 :歷史伺服器頁面,埠號為18080
  • 引數2:指定歷史伺服器日誌儲存路徑
  • 引數3:指定儲存application歷史記錄的個數,如果超過這個值,舊的應用程式將被刪除,這個是記憶體中的應用數量,不是頁面上顯示的應用數。

(4)分發配置檔案

xsync conf

(5)重新啟動spark叢集和歷史伺服器

sbin/start-all.sh 
sbin/start-history-server.sh

(6)重新執行測試應用的任務

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10

(7)歷史伺服器的檢視地址:http://hadoop101:18080

配置高可用

​ 配置高可用是因為當前叢集中的Master節點只有一個,所以會存在單點故障問題。所以為了解決單點故障問題,需要在叢集中配置多個Master節點,一旦處於活動狀態的Master發生故障時,由備用Master提供服務,保證作業可以繼續執行。這裡的高可用一般採用Zookeeper設定。

叢集規劃

hadoop101 hadoop102 hadoop103
Spark Zookeeper、Master、Worker Zookeeper、Master、Worker Zookeeper、Worker

(1)啟動zookeeper叢集

zk.sh start

(2)修改spark-env.sh檔案,新增如下配置

註釋如下內容: 
#SPARK_MASTER_HOST=hadoop101 
#SPARK_MASTER_PORT=7077

新增如下內容: 
#Master監控頁面預設訪問埠為8080,但是可能會和Zookeeper 衝突,所以改成8989,也可以自定義,訪問UI監控頁面時請注意 
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=hadoop101,hadoop102,hadoop103 
-Dspark.deploy.zookeeper.dir=/spark"

(3)分發配置檔案

xsync conf/

(4)啟動叢集

sbin/start-all.sh

(5)啟動hadoop102的單獨Master節點,此時hadoop102節點Master狀態處於備用狀態

sbin/start-master.sh

(6)提交測試應用到高可用叢集

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077,hadoop102:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10

(7)可將hadoop101的master程序殺掉

kill -9 程序號

(8)進入地址:hadoop102:8989的頁面,過一會兒會發現,hadoop102節點的master狀態提升為活動狀態。