運行時做業查看node
每個SparkContext啓動一個web UI,默認狀況下在端口4040, 顯示關於應用程序的有用信息,包括:linux
· 調度器階段和任務的列表ios
· RDD大小和內存使用的概覽web
· 環境信息。apache
· 關於運行中執行器的信息後端
在web瀏覽器打開 http:// < driver-node >:4040就能夠訪問該接口。若是在同一個主機上運行多個SparkContexts,將4040開始遞增綁定端口 (404一、404二、等)。瀏覽器
請注意,默認狀況下,這些信息僅適用於應用程序的生命週期。要想在應用程序完成以後查看web UI,在應用程序啓動以前,spark.eventLog.enabled必須設置爲true。這樣Spark會將Spark事件編碼顯示信息持久化存儲。安全
運行完成後做業查看服務器
Spark的集羣管理器也有本身的獨立模式 web UI 。若是應用程序已將其生命週期內的事件信息記錄進日誌中,那麼在應用程序完成後,獨立主機的web UI將自動從新呈現應用程序的UI。網絡
若是Spark運行在Mesos或者Yarn上, 經過Spark的歷史服務器仍然能夠重建完成的應用程序的UI,只要歷史服務器存有應用程序事件日誌。能夠執行下面的命令啓動歷史服務器:
./sbin/start-history-server.sh
當使用文件系統提供者類(參見下面的spark.history.provider), 配置選項spark.history.fs.logDirectory基本日誌記錄目錄必須提供,並且應該包含子目錄,每一個子目錄對應一個應用程序的事件日誌。默認狀況下這將在 http:// <服務器url >:18080建立一個web界面。歷史服務器能夠配置 以下:
環境變量 |
意義 |
|
分配給歷史服務器的內存(默認值:512m)。 |
|
歷史服務器JVM選項(默認值:none)。 |
|
歷史服務器的公共地址。若是沒有設置,應用程序歷史的的連接可能會使用服務器的內部地址, 這可能致使失效連接(默認值:無)。 |
|
|
屬性名 |
默認值 |
意義 |
spark.history.provider |
org.apache.spark.deploy.history.FsHistoryProvider |
實現應用程序歷史後端類名。目前Spark只提供一種實現,用於查找存儲在文件系統的應用程序日誌。 |
spark.history.fs.logDirectory |
file:/tmp/spark-events |
歷史服務器加載的包含應用程序事件日誌的目錄 |
spark.history.fs.updateInterval |
10 |
歷史服務器顯示的信息更新時間間隔,以秒爲單位的.每次更新將檢查事件日誌在持久化存儲上的任何更改。 |
spark.history.retainedApplications |
50 |
應用程序ui保留的數量。若是超過這個上限,而後最古老的應用程序記錄將被刪除。 |
spark.history.ui.port |
18080 |
歷史服務器web界面的綁定端口 |
spark.history.kerberos.enabled |
false |
指示歷史服務器是否應該使用kerberos登陸。若是歷史服務器訪問的是一個安全的Hadoop集羣HDFS文件, 這是有用的。若是設置爲true,它將使用 |
spark.history.kerberos.principal |
(none) |
歷史服務器的Kerberos主體名稱。 |
spark.history.kerberos.keytab |
(none) |
歷史服務器的kerberos keytab文件的位置。 |
spark.history.ui.acls.enable |
false |
指定是否應該檢查查看應用程序的acl受權用戶。 若是設置爲啓用, 當應用程序運行時,不管應用程序是否設置 了 |
請注意,全部的這些ui,表,均可以經過點擊表頭進行排序,以方便識別任務,數據等。
注意,歷史服務器只顯示已經完成的Spark Job。 要想使Spark Job提早完成, 使Spark上下文(Spark Context) 中止( 執行sc.stop()
),或者在Python中使用 SparkContext() as sc:
來處理Spark上下文創建和拆除,也會在UI上顯示job歷史信息。
指標Metrics
Spark自帶一個基於Coda Hale指標庫 的可配置的指標系統。容許用戶使用各式各樣的sinks輸出Spark指標,包括HTTP、JMX、CSV 文件。指標系統經過$SPARK_HOME/conf/metrics.properties配置文件進行配置。也能夠經過指定spark.metrics.conf配置屬性自定義文件的位置。 關於Spark指標,不一樣的Spark組件是對應不一樣的指標實例 。在每一個實例中,能夠配置一系列的報告指標槽sink。 下面是目前支持的實例:
· master: Spark獨立的主進程。
· applications: 在主程序上的一個組件,對應各類應用程序報告。
· worker:一個Spark獨立的工做進程。
· executor: 一個Spark執行器。
· driver: Spark驅動程序進程(建立SparkContext的進程)。
每一個實例的報告能夠有零個或更多的sinks 。自帶的 Sinks 存在於 org.apache.spark.metrics.sink 包:
· ConsoleSink :將指標信息輸出到控制檯。
· CSVSink :按期使用CSV文件導出數據。
· JmxSink :將指標輸出到JMX控制檯。
· MetricsServlet :在現有的SparkUI內添加一個servlet,以JSON格式提供指標數據。
· GraphiteSink :將指標發送到Graphite節點。
Spark也支持Ganglia sink,但因爲許可限制的緣由並不包含在默認的構建中:
· GangliaSink :發送指標到Ganglia節點或廣播組。
安裝 GangliaSink 您須要執行一個自定義Spark構建。 請注意, 嵌入這個庫 ,那麼Spark包就包含有了LGPL 許可代碼 。 對於sbt用戶,在構建以前設置SPARK_GANGLIA_LGPL環境變量便可。 對於Maven用戶來講,啓用 -Pspark-ganglia-lgpl 配置便可。 除此以外, 修改Spark的集羣構建,用戶應用程序須要連接到 spark-ganglia-lgpl。
指標配置文件示例位於$SPARK_HOME/conf/metrics.properties.template。
高級工具
一些外部工具能夠用來幫助提高Spark Job的性能:
· 整個集羣範圍的監視工具,如 Ganglia ,能夠提供集羣的整體利用率和資源瓶頸。 例如,一個Ganglia指示板能夠很快發現一個特定的工做負載是否磁盤綁定,網絡綁定,或者 CPU綁定。
· 操做系統分析工具如 dstat , iostat , iotop等能夠提供單個節點細粒度的分析。
· JVM 實用工具如jstack 能夠提供棧跟蹤信息, jmap 能夠生成堆dump, jstat報告分時統計以及jconsole等對於JVM內部結構分析都是很是有用的.