Spark监控优化与性能提升策略
指标
概述
Spark 的指标被解耦到对应于 Spark 组件的不同实例中。在每个实例中,您可以配置一组向其报告指标的接收器。目前支持以下实例:

master:Spark 独立主进程。applications:master 中的一个组件,负责报告各种应用程序。worker:一个 Spark 独立工作进程。executor:一个 Spark 执行器。driver:Spark 驱动程序进程(创建 SparkContext 的进程)。shuffleService:Spark 随机播放服务。applicationMaster:在 YARN 上运行时的 Spark ApplicationMaster。mesos_cluster:在 Mesos 上运行时的 Spark 集群调度器。
每个实例都可以向零个或多个接收器报告。接收器包含在 org.apache.spark.metrics.sink 包中:
- ConsoleSink:将指标信息记录到控制台。
- CSVSink:定期将指标数据导出到 CSV 文件。
- JmxSink:注册指标以在 JMX 控制台中查看。
- MetricsServlet:在现有的 Spark UI 中添加一个 servlet,以将指标数据作为 JSON 数据提供。
- PrometheusServlet:(实验性)在现有的 Spark UI 中添加一个 servlet,以提供 Prometheus 格式的指标数据。
- GraphiteSink:将指标发送到 Graphite 节点。
- Slf4jSink:将指标作为日志条目发送到 slf4j。
- StatsdSink:将指标发送到 StatsD 节点。
任务配置
方式1:使用 Docker 镜像中的配置文件
yaml
monitoring:
exposeDriverMetrics: true
exposeExecutorMetrics: true
prometheus:
jmxExporterJar: "/opt/spark/jars/jmx_prometheus_javaagent-0.17.2.jar"
port: 8090
portName: http-metric
configFile: "/opt/spark/metrics/conf/prometheus.yaml"
lowercaseOutputName: true
attrNameSnakeCase: true
rules:
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+)><>Value
name: spark_driver_$3_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+).(S+)><>Value
name: spark_driver_$3_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.(S+).StreamingMetrics.streaming.(S+)><>Value
name: spark_streaming_driver_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.spark.streaming.(S+).(S+)><>Value
name: spark_structured_streaming_driver_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
query_name: "$3"
- pattern: metrics<name=(S+).(S+).(S+).executor.(S+)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).driver.DAGScheduler.(.*)><>Count
name: spark_driver_DAGScheduler_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.HiveExternalCatalog.(.*)><>Count
name: spark_driver_HiveExternalCatalog_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.CodeGenerator.(.*)><>Count
name: spark_driver_CodeGenerator_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Count
name: spark_driver_LiveListenerBus_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Value
name: spark_driver_LiveListenerBus_$3
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).(.*).executor.(.*)><>Count
name: spark_executor_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).executor.(.*)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).(jvm|NettyBlockTransfer).(.*)><>Value
name: spark_executor_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).HiveExternalCatalog.(.*)><>Count
name: spark_executor_HiveExternalCatalog_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).CodeGenerator.(.*)><>Count
name: spark_executor_CodeGenerator_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
方式2:直接放在配置文件中
yaml
monitoring:
exposeDriverMetrics: true
exposeExecutorMetrics: true
metricsProperties: |
*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
# Enable JvmSource for instance master, worker, driver and executor
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
prometheus:
jmxExporterJar: "/opt/spark/jars/jmx_prometheus_javaagent-0.17.2.jar"
port: 8090
configuration: |
lowercaseOutputName: true
attrNameSnakeCase: true
rules:
# These come from the application driver if it's a streaming application
# Example: default/streaming.driver.com.example.ClassName.StreamingMetrics.streaming.lastCompletedBatch_schedulingDelay
- pattern: metrics<name=(S+).(S+).driver.(S+).StreamingMetrics.streaming.(S+)><>Value
name: spark_streaming_driver_$4
labels:
app_namespace: "$1"
app_id: "$2"
# These come from the application driver if it's a structured streaming application
# Example: default/streaming.driver.spark.streaming.QueryName.inputRate-total
- pattern: metrics<name=(S+).(S+).driver.spark.streaming.(S+).(S+)><>Value
name: spark_structured_streaming_driver_$4
labels:
app_namespace: "$1"
app_id: "$2"
query_name: "$3"
# These come from the application executors
# Example: default/spark-pi.0.executor.threadpool.activeTasks
- pattern: metrics<name=(S+).(S+).(S+).executor.(S+)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
# These come from the application driver
# Example: default/spark-pi.driver.DAGScheduler.stage.failedStages
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+)><>Value
name: spark_driver_$3_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
# [ADD]
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+).(S+)><>Value
name: spark_driver_$3_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
# These come from the application driver
# Emulate timers for DAGScheduler like messagePRocessingTime
- pattern: metrics<name=(S+).(S+).driver.DAGScheduler.(.*)><>Count
name: spark_driver_DAGScheduler_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
# HiveExternalCatalog is of type counter
- pattern: metrics<name=(S+).(S+).driver.HiveExternalCatalog.(.*)><>Count
name: spark_driver_HiveExternalCatalog_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
# These come from the application driver
# Emulate histograms for CodeGenerator
- pattern: metrics<name=(S+).(S+).driver.CodeGenerator.(.*)><>Count
name: spark_driver_CodeGenerator_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
# These come from the application driver
# Emulate timer (keep only count attribute) plus counters for LiveListenerBus
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Count
name: spark_driver_LiveListenerBus_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
# Get Gauge type metrics for LiveListenerBus
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Value
name: spark_driver_LiveListenerBus_$3
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
# Executors counters
- pattern: metrics<name=(S+).(S+).(.*).executor.(.*)><>Count
name: spark_executor_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
# [ADD]
- pattern: metrics<name=(S+).(S+).([0-9]+).executor.(.*)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
# These come from the application executors
# Example: app-20160809000059-0000.0.jvm.threadpool.activeTasks
- pattern: metrics<name=(S+).(S+).([0-9]+).(jvm|NettyBlockTransfer).(.*)><>Value
name: spark_executor_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).HiveExternalCatalog.(.*)><>Count
name: spark_executor_HiveExternalCatalog_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
# These come from the application driver
# Emulate histograms for CodeGenerator
- pattern: metrics<name=(S+).(S+).([0-9]+).CodeGenerator.(.*)><>Count
name: spark_executor_CodeGenerator_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
镜像配置
在根目录创建 metrics 文件夹:

metrics.properties
properties
*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
# Enable JvmSource for instance master, worker, driver and executor
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
prometheus.yaml
yaml
---
lowercaseOutputName: true
attrNameSnakeCase: true
rules:
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+)><>Value
name: spark_driver_$3_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
# [ADD]
- pattern: metrics<name=(S+).(S+).driver.(BlockManager|DAGScheduler|jvm).(S+).(S+)><>Value
name: spark_driver_$3_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.(S+).StreamingMetrics.streaming.(S+)><>Value
name: spark_streaming_driver_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.spark.streaming.(S+).(S+)><>Value
name: spark_structured_streaming_driver_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
query_name: "$3"
- pattern: metrics<name=(S+).(S+).(S+).executor.(S+)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).driver.DAGScheduler.(.*)><>Count
name: spark_driver_DAGScheduler_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.HiveExternalCatalog.(.*)><>Count
name: spark_driver_HiveExternalCatalog_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.CodeGenerator.(.*)><>Count
name: spark_driver_CodeGenerator_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Count
name: spark_driver_LiveListenerBus_$3_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).driver.LiveListenerBus.(.*)><>Value
name: spark_driver_LiveListenerBus_$3
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
- pattern: metrics<name=(S+).(S+).(.*).executor.(.*)><>Count
name: spark_executor_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
# [ADD]
- pattern: metrics<name=(S+).(S+).([0-9]+).executor.(.*)><>Value
name: spark_executor_$4
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).(jvm|NettyBlockTransfer).(.*)><>Value
name: spark_executor_$4_$5
type: GAUGE
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).HiveExternalCatalog.(.*)><>Count
name: spark_executor_HiveExternalCatalog_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
- pattern: metrics<name=(S+).(S+).([0-9]+).CodeGenerator.(.*)><>Count
name: spark_executor_CodeGenerator_$4_count
type: COUNTER
labels:
app_namespace: "$1"
app_id: "$2"
executor_id: "$3"
Dockerfile 配置
在 Dockerfile 中增加以下内容:

dockerfile
RUN mkdir -p /opt/spark/metrics/conf
COPY metrics/metrics.properties /opt/spark/metrics/conf
COPY metrics/prometheus.yaml /opt/spark/metrics/conf
可用指标提供者列表
Spark 使用的指标有多种类型:gauge、counter、histogram、meter 和 timer,详见 Dropwizard 库文档。以下组件和指标列表报告了名称及有关可用指标的一些详细信息,按组件实例和源命名空间分组。
Componentinstance=Driver
这是具有最多仪器化指标的组件。
-
namespace=BlockManager
- disk.diskSpaceUsed_MB
- memory.maxMem_MB
- memory.maxOffHeapMem_MB
- memory.maxOnHeapMem_MB
- memory.memUsed_MB
- memory.offHeapMemUsed_MB
- memory.onHeapMemUsed_MB
- memory.remainingMem_MB
- memory.remainingOffHeapMem_MB
- memory.remainingOnHeapMem_MB
-
namespace=HiveExternalCatalog
- 注意: 这些指标依赖于配置参数
spark.metrics.staticSources.enabled(默认值为 true)。 - fileCacheHits.count
- filesDiscovered.count
- hiveClientCalls.count
- parallelListingJobCount.count
- partitionsFetched.count
- 注意: 这些指标依赖于配置参数
-
namespace=CodeGenerator
- 注意: 这些指标依赖于配置参数
spark.metrics.staticSources.enabled(默认值为 true)。 - compilationTime (histogram)
- generatedClassSize (histogram)
- generatedMethodSize (histogram)
- sourceCodeSize (histogram)
- 注意: 这些指标依赖于配置参数
-
namespace=DAGScheduler
- job.activeJobs
- job.allJobs
- messageProcessingTime (timer)
- stage.failedStages
- stage.runningStages
- stage.waitingStages
-
namespace=LiveListenerBus
- listenerProcessingTime.org.apache.spark.HeartbeatReceiver (timer)
- listenerProcessingTime.org.apache.spark.scheduler.EventLoggingListener (timer)
- listenerProcessingTime.org.apache.spark.status.AppStatusListener (timer)
- numEventsPosted.count
- queue.appStatus.listenerProcessingTime (timer)
- queue.appStatus.numDroppedEvents.count
- queue.appStatus.size
- queue.eventLog.listenerProcessingTime (timer)
- queue.eventLog.numDroppedEvents.count
- queue.eventLog.size
- queue.executorManagement.listenerProcessingTime (timer)
-
namespace=appStatus(所有指标类型为 counter)
- 注意: 在 Spark 3.0 中引入。依赖于配置参数
spark.metrics.appStatusSource.enabled(默认值为 false)。 - stages.failedStages.count
- stages.skippedStages.count
- stages.completedStages.count
- tasks.blackListedExecutors.count(已弃用,请使用 excludedExecutors)
- tasks.excludedExecutors.count
- tasks.completedTasks.count
- tasks.failedTasks.count
- tasks.killedTasks.count
- tasks.skippedTasks.count
- tasks.unblackListedExecutors.count(已弃用,请使用 unexcludedExecutors)
- tasks.unexcludedExecutors.count
- jobs.succeededJobs
- jobs.failedJobs
- jobDuration
- 注意: 在 Spark 3.0 中引入。依赖于配置参数
-
namespace=AccumulatorSource
- 注意: 用户可配置的源,用于将累加器附加到指标系统。
- DoubleAccumulatorSource
- LongAccumulatorSource
-
namespace=spark.streaming
- 注意: 仅适用于 Spark Structured Streaming。依赖于配置参数
spark.sql.streaming.metricsEnabled=true(默认值为 false)。 - eventTime-watermark
- inputRate-total
- latency
- processingRate-total
- states-rowsTotal
- states-usedBytes
- 注意: 仅适用于 Spark Structured Streaming。依赖于配置参数
-
namespace=JVMCPU
- jvmCpuTime
-
namespace=executor
- 注意: 这些指标仅在本地模式下在驱动程序中可用。
- 此命名空间中可用指标的完整列表可以在 Executor 组件实例的相应条目中找到。
-
namespace=ExecutorMetrics
- 注意: 这些指标依赖于配置参数
spark.metrics.executorMetricsSource.enabled(默认值为 true)。 - 此源包含与内存相关的指标。此命名空间中可用指标的完整列表可以在 Executor 组件实例的相应条目中找到。
- 注意: 这些指标依赖于配置参数
-
namespace=ExecutorAllocationManager
- 注意: 这些指标仅在启用动态分配时发出。依赖于配置参数
spark.dynamicAllocation.enabled(默认值为 false)。 - executors.numberExecutorsToAdd
- executors.numberExecutorsPendingToRemove
- executors.numberAllExecutors
- executors.numberTargetExecutors
- executors.numberMaxNeededExecutors
- executors.numberExecutorsGracefullyDecommissioned.count
- executors.numberExecutorsDecommissionUnfinished.count
- executors.numberExecutorsExitedUnexpectedly.count
- executors.numberExecutorsKilledByDriver.count
- 注意: 这些指标仅在启用动态分配时发出。依赖于配置参数
-
namespace=plugin.
- 可选命名空间。此命名空间中的指标由用户提供的代码定义,并使用 Spark 插件 API 进行配置。有关如何将自定义插件加载到 Spark 中的详细信息,请参阅“高级仪器”部分。
Componentinstance=Executor
这些指标由 Spark 执行器公开。
-
namespace=executor(指标类型为 counter 或 gauge)
spark.executor.metrics.fileSystemSchemes(默认值:file,hdfs)确定暴露的文件系统指标。- 注意:
- bytesRead.count
- bytesWritten.count
- cpuTime.count
- deserializeCpuTime.count
- deserializeTime.count
- diskBytesSpilled.count
- filesystem.file.largeRead_ops
- filesystem.file.read_bytes
- filesystem.file.read_ops
- filesystem.file.write_bytes
- filesystem.file.write_ops
- filesystem.hdfs.largeRead_ops
- filesystem.hdfs.read_bytes
- filesystem.hdfs.read_ops
- filesystem.hdfs.write_bytes
- filesystem.hdfs.write_ops
- jvmGCTime.count
- memoryBytesSpilled.count
- recordsRead.count
- recordsWritten.count
- resultSerializationTime.count
- resultSize.count
- runTime.count
- shuffleBytesWritten.count
- shuffleFetchWaitTime.count
- shuffleLocalBlocksFetched.count
- shuffleLocalBytesRead.count
- shuffleRecordsRead.count
- shuffleRecordsWritten.count
- shuffleRemoteBlocksFetched.count
- shuffleRemoteBytesRead.count
- shuffleRemoteBytesReadToDisk.count
- shuffleTotalBytesRead.count
- shuffleWriteTime.count
- succeededTasks.count
- threadpool.activeTasks
- threadpool.completeTasks
- threadpool.currentPool_size
- threadpool.maxPool_size
- threadpool.startedTasks
-
namespace=ExecutorMetrics
- ProcessTreeJVMVMemory
- ProcessTreeJVMRSSMemory
- ProcessTreePythonVMemory
- ProcessTreePythonRSSMemory
- ProcessTreeOtherVMemory
- ProcessTreeOtherRSSMemory
- 注意: “ProcessTree_” 指标仅在特定条件下收集。这些条件是
/proc文件系统存在且spark.executor.processTreeMetrics.enabled=true。当这些条件不满足时,“ProcessTree_” 指标报告为 0。 - 这些指标依赖于配置参数
spark.metrics.executorMetricsSource.enabled(默认值为 true)。 - ExecutorMetrics 作为执行器和驱动程序的心跳进程的一部分定期更新:
spark.executor.heartbeatInterval(默认值为 10 秒)。 - 可选更快的轮询机制可用于执行器内存指标,可以通过设置轮询间隔(以毫秒为单位)来激活,使用配置参数
spark.executor.metrics.pollingInterval。 - 注意:
- JVMHeapMemory
- JVMOffHeapMemory
- OnHeapExecutionMemory
- OnHeapStorageMemory
- OnHeapUnifiedMemory
- OffHeapExecutionMemory
- OffHeapStorageMemory
- OffHeapUnifiedMemory
- DirectPoolMemory
- MappedPoolMemory
- MinorGCCount
- MinorGCTime
- MajorGCCount
- MajorGCTime
- “ProcessTree*” 指标计数器:
-
namespace=JVMCPU
- jvmCpuTime
-
namespace=NettyBlockTransfer
- shuffle-client.usedDirectMemory
- shuffle-client.usedHeapMemory
- shuffle-server.usedDirectMemory
- shuffle-server.usedHeapMemory
-
namespace=HiveExternalCatalog
- 注意: 这些指标依赖于配置参数
spark.metrics.staticSources.enabled(默认值为 true)。 - fileCacheHits.count
- filesDiscovered.count
- hiveClientCalls.count
- parallelListingJobCount.count
- partitionsFetched.count
- 注意: 这些指标依赖于配置参数
-
namespace=CodeGenerator
- 注意: 这些指标依赖于配置参数
spark.metrics.staticSources.enabled(默认值为 true)。 - compilationTime (histogram)
- generatedClassSize (histogram)
- generatedMethodSize (histogram)
- sourceCodeSize (histogram)
- 注意: 这些指标依赖于配置参数
-
namespace=plugin.
- 可选命名空间。此命名空间中的指标由用户提供的代码定义,并使用 Spark 插件 API 进行配置。有关如何将自定义插件加载到 Spark 中的详细信息,请参阅“高级仪器”部分。
Source= JVM Source
注意:
- 通过设置相关的
metrics.properties文件条目或配置参数来激活此源:spark.metrics.conf.*.source.jvm.class=org.apache.spark.metrics.source.JvmSource。 - 这些指标依赖于配置参数
spark.metrics.staticSources.enabled(默认值为 true)。 - 此源可用于驱动程序和执行器实例,也可用于其他实例。
- 此源使用 Dropwizard/Codahale Metric Sets for JVM instrumentation 提供有关 JVM 指标的信息,特别是 BufferPoolMetricSet、GarbageCollectorMetricSet 和 MemoryUsageGaugeSet。
Componentinstance=applicationMaster
注意: 适用于在 YARN 上运行时。
- numContainersPendingAllocate
- numExecutorsFailed
- numExecutorsRunning
- numLocalityAwareTasks
- numReleasedContainers
Componentinstance=mesos_cluster
注意: 适用于在 Mesos 上运行时。
- waitingDrivers
- launchedDrivers
- retryDrivers
Componentinstance=master
注意: 适用于在 Spark 独立模式下作为 master 运行时。
- workers
- aliveWorkers
- apps
- waitingApps
Componentinstance=ApplicationSource
注意: 适用于在 Spark 独立模式下作为 master 运行时。
- status
- runtime_ms
- cores
Componentinstance=worker
注意: 适用于在 Spark 独立模式下作为 worker 运行时。
- executors
- coresUsed
- memUsed_MB
- coresFree
- memFree_MB
Componentinstance=shuffleService
注意: 适用于 shuffle 服务。
- blockTransferRate (meter) - 块传输速率
- blockTransferMessageRate (meter) - 块传输消息速率,即如果启用了批量获取,则此表示批次数而不是块数
- blockTransferRateBytes (meter)
- blockTransferAvgTime_1min (gauge - 1 分钟移动平均值)
- numActiveConnections.count
- numRegisteredConnections.count
- numCaughtExceptions.count
- openBlockRequestLatencyMillis (histogram)
- registerExecutorRequestLatencyMillis (histogram)
- registeredExecutorsSize
- shuffle-server.usedDirectMemory
- shuffle-server.usedHeapMemory
参考:
end
