spark ui 監控

運行時做業查看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界面。歷史服務器能夠配置 以下:

環境變量

意義

SPARK_DAEMON_MEMORY

分配給歷史服務器的內存(默認值:512m)

SPARK_DAEMON_JAVA_OPTS

歷史服務器JVM選項(默認值:none)

SPARK_PUBLIC_DNS

歷史服務器的公共地址。若是沒有設置,應用程序歷史的的連接可能會使用服務器的內部地址,

這可能致使失效連接(默認值:)

SPARK_HISTORY_OPTS

spark.history.* 歷史服務器的配置選項(默認值: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 spark.history.kerberos.keytab 

spark.history.kerberos.principal

(none)

歷史服務器的Kerberos主體名稱。

spark.history.kerberos.keytab

(none)

歷史服務器的kerberos keytab文件的位置。

spark.history.ui.acls.enable

false

指定是否應該檢查查看應用程序的acl受權用戶。 若是設置爲啓用, 當應用程序運行時,不管應用程序是否設置 spark.ui.acls.enable, 都將啓用訪問控制檢查。應用程序全部者老是會有受權查看本身的應用程序,經過spark.ui.view.acls指定受權的用戶也能夠查看該應用程序。 若是禁用,沒有訪問控制檢查。

請注意,全部的這些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內部結構分析都是很是有用的.

相關文章
相關標籤/搜索