Spark學習筆記-使用Spark History Server


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

要使用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路徑

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

 

注意:會啟動失敗,控制台顯示

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頁面了

 

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

history server相關的配置參數描述

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM