Spark學習筆記-使用Spark History Server

在運行Spark應用程序的時候,driver會提供一個webUI給出應用程序的運行信息,可是該webUI隨着應用程序的完成而關閉端口,也就是 說,Spark應用程序運行完後,將沒法查看應用程序的歷史記錄。Spark history server就是爲了應對這種狀況而產生的,經過配置,Spark應用程序在運行完應用程序以後,將應用程序的運行信息寫入指定目錄,而Spark history server能夠將這些運行信息裝載並以web的方式供用戶瀏覽。node

要使用history server,對於提交應用程序的客戶端須要配置如下參數(在conf/spark-defaults.conf中配置):
spark.eventLog.enabled  true 
spark.eventLog.dir hdfs:
//hadoop1:8000/sparklogs spark.yarn.historyServer.address hadoop1:18080

 

進入$SPARK_HOME/sbin路徑web

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

 

注意:會啓動失敗,控制檯顯示apache

hadoop@Node4:/usr/local/SPARK/spark-1.1.0-bin-hadoop2.4/sbin$ ./start-history-server.sh 
starting org.apache.spark.deploy.history.HistoryServer, logging to /usr/local/SPARK/spark-1.1.0-bin-hadoop2.4/sbin/../logs/spark-hadoop-org.apache.spark.deploy.history.HistoryServer-1-Node4.out
failed to launch org.apache.spark.deploy.history.HistoryServer:
      at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:41)
      ... 6 more
full log in /usr/local/SPARK/spark-1.1.0-bin-hadoop2.4/sbin/../logs/spark-hadoop-org.apache.spark.deploy.history.HistoryServer-1-Node4.out

找到日誌文件,發現報錯 Logging directory must be specified
解決:在啓動historyserver的時候須要加上參數,指明log的存放位置,例如,咱們在spark-default.conf中配置的存放路徑爲hdfs://hadoop1:8000/sparklogs
有下面兩種方法解決問題
1. 將啓動命令改爲瀏覽器

start-history-server.sh hdfs://node4:9000/directory

2. 啓動命令不變,在conf/spark-env.sh中添加安全

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

這樣,在啓動HistoryServer以後,在瀏覽器中打開http://node4:18080就能夠看到web頁面了app

 

附:在conf/spark-defaults.conf中配置參數
ide

history server相關的配置參數描述oop

1) spark.history.updateInterval
  默認值:10
  以秒爲單位,更新日誌相關信息的時間間隔ui

2)spark.history.retainedApplications
  默認值:50
  在內存中保存Application歷史記錄的個數,若是超過這個值,舊的應用程序信息將被刪除,當再次訪問已被刪除的應用信息時須要從新構建頁面。spa

3)spark.history.ui.port
  默認值:18080
  HistoryServer的web端口

4)spark.history.kerberos.enabled
  默認值:false
  是否使用kerberos方式登陸訪問HistoryServer,對於持久層位於安全集羣的HDFS上是有用的,若是設置爲true,就要配置下面的兩個屬性

5)spark.history.kerberos.principal
  默認值:用於HistoryServer的kerberos主體名稱

6)spark.history.kerberos.keytab
  用於HistoryServer的kerberos keytab文件位置

7)spark.history.ui.acls.enable
  默認值:false
  受權用戶查看應用程序信息的時候是否檢查acl。若是啓用,只有應用程序全部者和spark.ui.view.acls指定的用戶能夠查看應用程序信息;不然,不作任何檢查

8)spark.eventLog.enabled
  默認值:false
  是否記錄Spark事件,用於應用程序在完成後重構webUI

9)spark.eventLog.dir
  默認值:file:///tmp/spark-events
  保存日誌相關信息的路徑,能夠是hdfs://開頭的HDFS路徑,也能夠是file://開頭的本地路徑,都須要提早建立

10)spark.eventLog.compress
  默認值:false
  是否壓縮記錄Spark事件,前提spark.eventLog.enabled爲true,默認使用的是snappy

以spark.history開頭的須要配置在spark-env.sh中的SPARK_HISTORY_OPTS,以spark.eventLog開頭的配置在spark-defaults.conf

相關文章
相關標籤/搜索