【Spark篇】---Spark中Master-HA和historyServer的搭建和應用

LHBlog發表於2018-02-07

一、前述

 本節講述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 UiCompleted 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對應埠

相關文章