1. 程式人生 > >Spark筆記整理(十二):日誌記錄與監控

Spark筆記整理(十二):日誌記錄與監控

提交 說明 默認 conf 分布 core view aps 版本

1 Standalone模式下

按照香飄葉子的文檔部署好完全分布式集群後,提交任務到Spark集群中,查看hadoop01:8080,想點擊查看某個已完成應用的歷史情況,出現下面的提示:

Event logging is not enabled
No event logs were found for this application! To enable event logging, set spark.eventLog.enabled to true and spark.eventLog.dir to the directory to which your event logs are written.

顯然需要按照提示進行相關的配置,先將Spark服務停掉,然後在conf目錄下的spark-defaults.conf配置文件中添加如下配置:

spark.eventLog.enabled  true
spark.eventLog.dir      hdfs://ns1/logs/spark

不過需要提前在hdfs中創建好相關目錄,將配置文件同步到各個節點上,然後重啟Spark集群。

再提交任務:

./spark-submit-standalone.sh spark-process-1.0-SNAPSHOT.jar cn.xpleaf.spark.scala.core.p1._01SparkWordCountOps

然後就可以完成standalone模式下Spark日誌的記錄和查看了。

2 Yarn模式下

2.1 必知常識

當采用Spark on Yarn的方式來執行Spark應用程序時,只需要在提交任務的當前節點上配置好Spark的環境即可,不需要啟動Sparkmaster或者Worker節點,因為最終的程序是跑在Hadoop集群上,由Yarn進行調度的,這點需要明確。

在這種情況下,提交任務到Yarn上,是可以通過ResourceManager的地址來查看到執行的應用程序,比如RM是在hadoop02節點上啟動,則默認可以通過hadoop02:8088來訪問到其Application頁面,但是如果這時希望查看到前面standalone

模式下詳細的Spark程序執行情況時,是沒有辦法的,即便啟動了Hadoophistory-server,也僅僅只能查看到logs日誌信息而已。

這時,就需要啟動Spark本身的日誌服務器,並通過其來查看執行的應用程序的Spark詳細日誌信息。

本文的描述都是基於Spark 1.6.2,後面新的Spark版本可能會有所不同。

2.2 日誌(歷史)服務器配置、啟動與原理

在當前安裝Spark的節點上,進入到conf目錄,在配置文件spark-defaults.conf添加下面的配置:

spark.eventLog.enabled  true    # 開啟日誌記錄
spark.eventLog.dir      hdfs://ns1/logs/spark   # 日誌的保存位置
spark.history.fs.logDirectory   hdfs://ns1/logs/spark   # 歷史日誌保存的位置

前面兩個的配置是保證,執行Spark程序時,完整的日誌信息會保存下來,並保存到指定的位置上,最後一個配置則是說明,當啟動Spark的應用程序歷史服務器時,應該從哪裏去讀取相關的日誌信息,並以與standalone模式相同的Web UI的形式將日誌信息展示出來。
配置完成後,使用下面的命令來啟動歷史服務器:

./sbin/start-history-server.sh

該日誌歷史服務器默認以18080端口號來啟動,因此,可以訪問相關地址+端口號來進行訪問,比如我是在hadoop01節點上配置並啟動該歷史服務器的,那麽就可以通過下面的地址進行訪問:

hadoop01:18080

訪問之後看到的就跟standalone模式下的Web UI是一樣的,更詳細的配置說明可以參考官方文檔:

http://spark.apache.org/docs/1.6.2/monitoring.html#viewing-after-the-fact

Spark筆記整理(十二):日誌記錄與監控