TaskMetrics¶
TaskMetrics is a collection of metrics (accumulators) tracked during execution of a task.
Creating Instance¶
TaskMetrics takes no input arguments to be created.
TaskMetrics is created when:
Stageis requested to makeNewStageAttempt
Metrics¶
ShuffleWriteMetrics¶
- shuffle.write.bytesWritten
- shuffle.write.recordsWritten
- shuffle.write.writeTime
ShuffleWriteMetrics is exposed using Dropwizard metrics system using ExecutorSource (when TaskRunner is about to finish running):
- shuffleBytesWritten
- shuffleRecordsWritten
- shuffleWriteTime
ShuffleWriteMetrics can be monitored using:
- StatsReportListener (when a stage completes)
- shuffle bytes written
- JsonProtocol (when requested to taskMetricsToJson)
- Shuffle Bytes Written
- Shuffle Write Time
- Shuffle Records Written
shuffleWriteMetrics is used when:
ShuffleWriteProcessoris requested for a ShuffleWriteMetricsReporterSortShuffleWriteris createdAppStatusListeneris requested to handle a SparkListenerTaskEndLiveTaskis requested toupdateMetricsExternalSorteris requested to writePartitionedFile (to create a DiskBlockObjectWriter), writePartitionedMapOutputShuffleExchangeExec(Spark SQL) is requested for aShuffleWriteProcessor(to create a ShuffleDependency)
Memory Bytes Spilled¶
memoryBytesSpilled metric
memoryBytesSpilled is exposed using Dropwizard metrics system using ExecutorSource as memoryBytesSpilled.
incMemoryBytesSpilled is used when:
Aggregatoris requested to updateMetricsCoGroupedRDDis requested to computeBlockStoreShuffleReaderis requested to readShuffleExternalSorteris requested to spillExternalSorteris requested to writePartitionedFile and writePartitionedMapOutputUnsafeExternalSorteris requested to createWithExistingInMemorySorter and spillSpillableIterator(of UnsafeExternalSorter) is requested tospill
TaskContext¶
TaskMetrics is available using TaskContext.taskMetrics.
TaskContext.get.taskMetrics
Serializable¶
TaskMetrics is a Serializable (Java).
Task¶
TaskMetrics is part of Task.
task.metrics
SparkListener¶
TaskMetrics is available using SparkListener and intercepting SparkListenerTaskEnd events.
StatsReportListener¶
StatsReportListener can be used for summary statistics at runtime (after a stage completes).
Spark History Server¶
Spark History Server uses EventLoggingListener to intercept post-execution statistics (incl. TaskMetrics).