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狀態提升為活動狀態。