Spark REST API & metrics

版本: 2.3.0

除了可以通过ui访问各项参数, spark也提供json格式的方法。
这使得开发者可以方便的开发监控工具和新的可视化界面。
JSON支持运行状态的应用 和 历史服务状态的应用。
访问点为/api/v1 。 (对于history server ,http://: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

你可能感兴趣的:(Spark REST API & metrics)