如何使用Apache Spark指標

學習如何與Databricks一起使用Apache Spark度量。

寫的亞當Pavlacka

最後發布日期:2022年5月16日

方法監視Apache Spark組件的示例Spark可配置度量係統.具體來說,它展示了如何設置新源和啟用接收器。

有關可用於指標收集的Spark組件(包括開箱即用的接收器)的詳細信息,請參見上麵的文檔鏈接。

刪除

信息

還有其他幾種方法可以收集指標來洞察Spark作業的執行情況,本文也沒有介紹:

  • SparkStatusTracker (API):監控作業、階段或任務進度
  • StreamingQueryListener (API):攔截流事件
  • SparkListener ():從Spark調度程序中攔截事件

有關在Databricks中使用其他第三方工具監視Spark作業的信息,請參見監視性能(AWS|Azure).

這個指標收集係統是如何工作的?在實例化之後,每個執行程序都會創建一個到驅動程序的連接來傳遞度量。

方法的第一步是編寫一個擴展特征:

%scala類MySource extends Source {override val sourceName: String = "MySource" override val metricRegistry: metricRegistry = new metricRegistry val FOO: Histogram = metricRegistry. Histogram (metricRegistry. name("fooHistory")) val FOO_COUNTER: Counter = metricRegistry. Counter (metricRegistry. name("fooCounter"))}

下一步是啟用接收器。在這個例子中,指標被打印到控製台:

%scala val spark: SparkSession = SparkSession .builder .master("local[*]") . appname ("MySourceDemo") .config("spark.driver. SparkSession .builder .master ").config("spark.metrics.conf.*.sink.console.class", "org.apache.spark.metrics.sink.ConsoleSink") . getorcreate ()
刪除

信息

要將度量標準沉到Prometheus,你可以使用這個第三方庫:https://github.com/banzaicloud/spark-metrics

最後一步是實例化源代碼並在SparkEnv中注冊它:

%scala val source: MySource = new MySource SparkEnv.get.metricsSystem.registerSource(source)

您可以查看一個完整的、可構建的示例https://github.com/newroyker/meter