問題描述
在Spark安裝成功后换怖,無論是通過spark-submit工具還是通過Intellij IDEA提交任務(wù),只要在Spark應(yīng)用程序運行期間合溺,都可以通過WebUI控制臺頁面來查看具體的運行細節(jié)与柑,在瀏覽器中通過地址:http://<driver-node>:4040
即可查看當前的運行狀態(tài)。但是一旦應(yīng)用程序運行結(jié)束厉亏,該Web界面也就失效了,無法繼續(xù)查看監(jiān)控集群信息烈和。無法回顧剛剛運行的程序細節(jié)爱只,進而定向做出優(yōu)化,肯定極為不便招刹。
這時候就需要為集群配置Spark History Server了恬试。
注:<driver-node>
可以是主機名,如master疯暑,也可以是主機名對應(yīng)的IP训柴。
Spark History Server
Spark History Server可以很好地解決上面的問題。
通過配置妇拯,我們可以在Spark應(yīng)用程序運行完成后幻馁,將應(yīng)用程序的運行信息寫入知道目錄,而Spark History Server可以將這些信息裝在并以Web形式供用戶瀏覽越锈。
要使用Spark History Server仗嗦,對于提交應(yīng)用程序的客戶端需要配置以下參數(shù)。
Spark History Server配置(只需要在master主機進行配置)
下面以Standalone模式為例說明配置信息甘凭。更多擴展細節(jié)可以根據(jù)自己的需求在此基礎(chǔ)上添加配置項稀拐。
1、首先配置$SPARK_HOME$/conf
目錄下的spark-defaults.conf
文件丹弱。
默認spark-defaults.conf
是不存在的德撬,我們可以根據(jù)Spark提供的template文件新建之。
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/conf# mv spark-defaults.conf.template spark-defaults.conf
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/conf# vim spark-defaults.conf
并修改文件內(nèi)容為:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop01:8020/spark_event_data
spark.eventLog.compress true
屬性說明
(1) spark.eventLog.enabled蹈矮。
是否記錄Spark事件砰逻,用于應(yīng)用程序在完成后查看WebUI。
(2) spark.eventLog.dir泛鸟。
設(shè)置spark.eventLog.enabled為true后蝠咆,該屬性為記錄spark時間的根目錄。在此根目錄中,Spark為每個應(yīng)用程序創(chuàng)建分目錄刚操,并將應(yīng)用程序的時間記錄到此目錄中闸翅。用戶可以將此屬性設(shè)置為HDFS目錄,以便History Server讀取菊霜。
(3) spark.eventLog.compress坚冀。
否壓縮記錄Spark事件,前提spark.eventLog.enabled為true鉴逞,默認使用的是snappy记某。
2、在hdfs中建立存放目錄构捡。
root@master:~# hadoop fs -mkdir /spark_event_data
之后的歷史記錄都會被存放到這里液南。
3、配置spark-env.sh
文件勾徽。
在之前的配置項后面
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hadoop01:8020/spark_event_data"
屬性說明
(1) spark.history.ui.port
WebUI的端口號滑凉。默認為18080,也可以自行設(shè)置喘帚。
(2) spark.history.retainedApplications
設(shè)置緩存Cache中保存的應(yīng)用程序歷史記錄的個數(shù)畅姊,默認50,如果超過這個值吹由,舊的將被刪除若未。
注:緩存文件數(shù)不表示實際顯示的文件總數(shù)。只是表示不在緩存中的文件可能需要從硬盤讀取倾鲫,速度稍有差別陨瘩。
(3) spark.history.fs.logDirectory
存放歷史記錄文件的目錄〖墩В可以是Hadoop APIs支持的任意文件系統(tǒng)。
啟動
啟動Spark的start-all.sh
后帚湘,再運行start-history-server.sh
文件即可啟動歷史服務(wù)玫荣。
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/sbin# ./start-history-server.sh
啟動后的效果如下(此時尚未運行程序,沒有記錄顯示出來):
之后在每次應(yīng)用程序運行結(jié)束后大诸,就可以在這里觀察剛剛程序的細節(jié)了捅厂。
小結(jié)
應(yīng)用程序運行時的4040和歷史記錄的18080WebUI配合使用,可以讓我們在運行Spark應(yīng)用的時候隨時監(jiān)測程序運行狀態(tài)资柔,并作相應(yīng)的優(yōu)化和調(diào)節(jié)焙贷,效果顯著。