Spark Metrics配置详解
Spark的Metrics系統目前支持以下的實例:
(1)、master:Spark standalone模式的master進程;
(2)、worker:Spark standalone模式的worker進程;
(3)、executor:Spark executor;
(4)、driver:Spark driver進程;
(5)、applications:master進程里的一個組件,為各種應用作匯報。
在Spark的Metrics系統主要支持Sink和Source兩種,其中,Sink指定metrics信息發送到哪里,每個instance可以設置一個或多個Sink(這點和Flume很類似)。Sink的源碼位于org.apache.spark.metrics.sink包中;而Source也是指信息的來源,它主要分為兩大類:
(1)、Spark內部source,比如MasterSource、WorkerSource等,它們會接收Spark組件的內部狀態;
(2)、通用source,如:JvmSource,它收集低級別的狀態。
文章目錄
- 1 支持的Sink類別
- 1.1 ConsoleSink
- 1.2 CSVSink
- 1.3 JmxSink
- 1.4 MetricsServlet
- 1.5 GraphiteSink
- 1.6 GangliaSink
- 2 如何使用
- 2.1 實例
支持的Sink類別
ConsoleSink
ConsoleSink是記錄Metrics信息到Console中。
| class | org.apache.spark.metrics.sink.ConsoleSink | Sink類 |
| period | 10 | 輪詢間隔 |
| unit | seconds | 輪詢間隔的單位 |
CSVSink
定期的把Metrics信息導出到CSV文件中。
| class | org.apache.spark.metrics.sink.CsvSink | Sink類 |
| period | 10 | 輪詢間隔 |
| unit | seconds | 輪詢間隔的單位 |
| directory | /tmp | CSV文件存儲的位置 |
JmxSink
可以通過JMX方式訪問Mertics信息
| class | org.apache.spark.metrics.sink.JmxSink | Sink類 |
MetricsServlet
| class | org.apache.spark.metrics.sink.MetricsServlet | Sink類 |
| path | VARIES* | Path prefix from the web server root |
| sample | false | Whether to show entire set of samples for histograms ('false' or 'true') | |
這個在Spark中默認就開啟了,我們可以在4040端口頁面的URL后面加上/metrics/json查看
GraphiteSink
| class | org.apache.spark.metrics.sink.GraphiteSink | Sink類 |
| host | NONE | Graphite服務器主機名 |
| port | NONE | Graphite服務器端口 |
| period | 10 | 輪詢間隔 |
| unit | seconds | 輪詢間隔的單位 |
| prefix | EMPTY STRING | Prefix to prepend to metric name |
GangliaSink
由于Licene的限制,默認沒有放到默認的build里面,如果需要使用,需要自己編譯(這個會在后面專門介紹)
| class | org.apache.spark.metrics.sink.GangliaSink | Sink類 |
| host | NONE | Ganglia 服務器的主機名或multicast group |
| port | NONE | Ganglia服務器的端口 |
| period | 10 | 輪詢間隔 |
| unit | seconds | 輪詢間隔的單位 |
| ttl | 1 | TTL of messages sent by Ganglia |
| mode | multicast | Ganglia網絡模式('unicast' or 'multicast') |
如何使用
在Spark安裝包的$SPARK_HOME/conf路徑下有個metrics.properties文件(如果不存在,請將metrics.properties.template重命名為metrics.properties即可),Spark啟動的時候會自動加載它。
當然,如果想修改配置文件位置,我們可以使用-Dspark.metrics.conf=xxx進行修改。
實例
下面我將簡單地介紹如何使用Spark Metrics。我只想簡單地開啟ConsoleSink,我們可以如下配置:
*.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink *.sink.console.period=10 *.sink.console.unit=secondsperiod是ConsoleSink的輪詢周期,unit是ConsoleSink的輪詢周期時間單位。上面是配置所有的實例,如果想單獨配置可以如下:
| master.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink master.sink.console.period=15 master.sink.console.unit=seconds |
這個配置可以覆蓋通用配置符(也就是上面的*號)
我們為master、worker、driver和executor開啟jvm source,如下:
master.source.jvm.class=org.apache.spark.metrics.source.JvmSource worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource當然,我們還可以自定義Source,這個需要繼承自org.apache.spark.metrics.source.Source類。關于如何自定義Source,我這里不介紹了,需要的同學可以去參照Spark源碼,比如JvmSource類的實現。
總結
以上是生活随笔為你收集整理的Spark Metrics配置详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark入门 - History Se
- 下一篇: Stack.Peek 与 stack.p