一、前述
本節講述Spark Master的HA的搭建,為的是防止單點故障。
Spark-UI 的使用介紹,可以更好的監控Spark應用程式的執行。
二、具體細節
1、Master HA
1、Master的高可用原理
Standalone叢集只有一個Master,如果Master掛了就無法提交應用程式,需要給Master進行高可用配置,Master的高可用可以使用fileSystem(檔案系統)和zookeeper(分散式協調服務)。
fileSystem只有儲存功能,可以儲存Master的後設資料資訊,用fileSystem搭建的Master高可用,在Master失敗時,需要我們手動啟動另外的備用Master,這種方式不推薦使用。
zookeeper有選舉和儲存功能,可以儲存Master的元素據資訊,使用zookeeper搭建的Master高可用,當Master掛掉時,備用的Master會自動切換,推薦使用這種方式搭建Master的HA。
2、Master高可用搭建
1) 在Spark Master節點上配置主Master,配置spark-env.sh
命令如下:-D指明配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/sparkmaster0821
2) 傳送到其他worker節點上
scp spark-env.sh root@node03:`pwd`
3) 找一臺節點(非主Master節點)配置備用 Master,修改spark-env.sh配置節點上的MasterIP:
4) 啟動叢集之前啟動zookeeper叢集
5) 在主節點上啟動spark Standalone叢集:./start-all.sh 在從節點上(node02)啟動備用叢集:在saprk的Sbin目錄下啟動備用節點:./start-master.sh
6) 開啟主Master和備用Master WebUI頁面,觀察狀態。
主master :
備用Master
切換過程中的Master的狀態:
注意:
- 主備切換過程中不能提交Application。
- 主備切換過程中不影響已經在叢集中執行的Application。因為Spark是粗粒度資源調,二主要task執行時的通訊是和Driver 與Driver無關。
-
提交SparkPi程式應指定主備Master
./spark-submit --master spark://node01:7077,node02:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 10000
2、配置historyServer
1、臨時配置,對本次提交的應用程式起作用
./spark-shell --master spark://node1:7077
--name myapp1
--conf spark.eventLog.enabled=true
--conf spark.eventLog.dir=hdfs://node1:9000/spark/test
停止程式,在Web Ui中Completed Applications對應的ApplicationID中能檢視history。
2、spark-default.conf配置檔案中配置HistoryServer,對所有提交的Application都起作用
在客戶端節點!!!,進入../spark-1.6.0/conf/ spark-defaults.conf最後加入:
//開啟記錄事件日誌的功能
spark.eventLog.enabled true
//設定事件日誌儲存的目錄
spark.eventLog.dir hdfs://node1:9000/spark/test
//設定HistoryServer載入事件日誌的位置
spark.history.fs.logDirectory hdfs://node1:9000/spark/test
//日誌優化選項,壓縮日誌
spark.eventLog.compress true
3、啟動HistoryServer:./start-history-server.sh
訪問HistoryServer:node4:18080,之後所有提交的應用程式執行狀況都會被記錄。
4040 Driver-web-UI對應埠
8081 Worker對應埠