Spark REST API & metrics

weixin_33895657發表於2018-05-31

版本: 2.3.0

除了可以通過ui訪問各項引數, spark也提供json格式的方法。
這使得開發者可以方便的開發監控工具和新的視覺化介面。
JSON支援執行狀態的應用 和 歷史服務狀態的應用。
訪問點為/api/v1 。 (對於history server ,http://<server-url>:18080/api/v1 ; 對於正在執行的應用, http://localhost:4040/api/v1.)

[app-id] 表示application ID 。 在yarn模式下是 [attempt-id] , 下表列出的api , 當執行在yarn cluster 模式下時, [app-id] 實際應是 [base-app-id]/[attempt-id], 其中[base-app-id] 應該是YARN的應用ID.

詳見 http://spark.apache.org/docs/latest/monitoring.html

度量 metrics

Spark具有基於Dropwizard Metrics Library的可配置度量系統 。這使使用者可以將Spark度量標準報告給各種接收器,包括HTTP,JMX和CSV檔案。度量系統通過Spark期望的配置檔案進行配置$SPARK_HOME/conf/metrics.properties。可以通過spark.metrics.conf 配置屬性指定自定義檔案位置。預設情況下,用於驅動程式或執行程式度量標準的根名稱空間是值spark.app.id。但是,使用者通常希望能夠跟蹤驅動程式和執行程式的各個應用程式的度量標準,這與應用程式標識(ie spark.app.id)很難做到,因為它隨著應用程式的每次呼叫而改變。對於這種用例,可以為使用的度量報告指定自定義名稱空間spark.metrics.namespace 配置屬性。例如,如果使用者想要將度量名稱空間設定為應用程式的名稱,則可以將該spark.metrics.namespace屬性設定為類似的值${spark.app.name}。此值由Spark適當擴充套件並用作度量標準系統的根名稱空間。非驅動程式和執行程式度量標準絕不會加上字首spark.app.id,也不 spark.metrics.namespace會對此類度量標準產生任何影響。

Spark的度量被解耦成對應於Spark元件的不同 例項。在每種情況下,您都可以配置一組要彙報指標的匯。目前支援以下例項:

  • master:Spark獨立主程式。
  • applications:主報告各種應用程式的元件。
  • worker:一個Spark獨立工作程式。
  • executor:一個Spark執行者。
  • driver:Spark驅動程式程式(建立SparkContext的過程)。
  • shuffleService:Spark洗牌服務。

每個例項可以報告為零個或多個接收器。sink 定義在org.apache.spark.metrics.sink包中 :

  • ConsoleSink:將度量標準資訊記錄到控制檯。
  • CSVSink:定期將度量資料匯出到CSV檔案。
  • JmxSink:註冊用於在JMX控制檯中檢視的度量標準。
  • MetricsServlet:在現有的Spark UI中新增一個servlet,以將度量資料作為JSON資料提供。
  • GraphiteSink:將指標傳送到Graphite節點。
  • Slf4jSink:將指標傳送到slf4j作為日誌條目。
  • StatsdSink:將指標傳送到StatsD節點。

由於許可限制,Spark還支援未包含在預設版本中的Ganglia接收器:

  • GangliaSink:將指標傳送給Ganglia節點或多播組。

要安裝,GangliaSink您需要執行Spark的自定義構建。請注意,通過嵌入此庫,您將在Spark包中包含LGPL許可程式碼。對於sbt使用者,SPARK_GANGLIA_LGPL在構建之前設定 環境變數。對於Maven使用者,啟用-Pspark-ganglia-lgpl配置檔案。除了修改叢集的Spark構建使用者應用程式之外,還需要連結到spark-ganglia-lgpl工件。

度量配置檔案的語法在示例配置檔案中定義 $SPARK_HOME/conf/metrics.properties.template

相關文章