預設情況下,Spark程式運作完畢關閉視窗之後,就無法再檢視運作記錄的Web UI(4040)了,但通過 HistoryServer 可以提供一個服務, 通過讀取日志檔案, 使得我們可以在程式運作結束後, 依然能夠檢視運作過程。本篇部落格,部落客就為大家帶來在Spark上配置JobHistoryServer的詳細過程。

1.進入到spark安裝目錄下的conf檔案夾
cd /export/servers/spark/conf
2.修改配置檔案名稱
vim spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node01:8020/sparklog
複制
注意:HDFS上的目錄需要提前存在
hadoop fs -mkdir -p /sparklog
3.修改spark-env.sh檔案
vim spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
-Dspark.history.retainedApplications=3
-Dspark.history.fs.logDirectory=hdfs://node01:8020/sparklog"
複制
參數描述:
spark.eventLog.dir:Application在運作過程中所有的資訊均記錄在該屬性指定的路徑下;
spark.history.ui.port=4000 WEBUI通路的端口号為4000
spark.history.fs.logDirectory=hdfs://node01:8020/sparklog 配置了該屬性後,在start-history-server.sh時就無需再顯式的指定路徑,Spark History Server頁面隻展示該指定路徑下的資訊
spark.history.retainedApplications=30指定儲存Application曆史記錄的個數,如果超過這個值,舊的應用程式資訊将被删除,這個是記憶體中的應用數,而不是頁面上顯示的應用數。
4.同步配置檔案
這裡可以用scp指令,也可以用xsync自定義的指令,關于如何使用xsync請參考<帶你書寫linux超實用的腳本——xcall(同步執行指令)與xsync(同步檔案目錄)>
xsync spark-defaults.conf
xsync spark-env.sh
5.重新開機叢集
/export/servers/spark/sbin/stop-all.sh /export/servers/spark/sbin/start-all.sh
6.在master上啟動日志伺服器
/export/servers/spark/sbin/start-history-server.sh
7.運作一個計算PI的執行個體程式
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--executor-memory 1G \
--total-executor-cores 2 \
/export/servers/spark/examples/jars/spark-examples_2.11-2.2.0.jar \
100
複制
待運作完畢之後,從浏覽器輸入
http://node01:4000/
- 如果遇到Hadoop HDFS的寫入權限問題:
org.apache.hadoop.security.AccessControlException
解決方案:
在hdfs-site.xml中添加如下配置,關閉權限驗證
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
複制
本次的分享就到這裡,受益的小夥伴或對大資料技術感興趣的朋友記得點贊關注小菌喲~