Apache Spark is incredibly powerful, but anyone who has worked with it long enough knows the feeling:
Why is this job suddenly slower today?
Why are executors running out of memory?
Why is one stage taking 90% of the runtime?
What exactly is Spark doing behind the scenes?
The Spark UI already provides a lot of useful information, but collecting, visualizing, and analyzing performance metrics at scale often requires additional tooling.
Over the years, we have developed and open-sourced a set of complementary tools to help Spark users monitor, troubleshoot, and better understand their workloads from notebooks to production clusters.
In this post, we present the three Spark monitoring tools we publish and actively use at CERN.
Three Different Tools, Three Different Perspectives on Spark
Each tool addresses a different layer of Spark observability:
| Tool | Main Goal |
|---|---|
| sparkMeasure | Capture and analyze Spark performance metrics programmatically |
| SparkMonitor | Improve visibility and usability inside notebooks |
| Spark Dashboard | Build real-time monitoring dashboards and historical observability |
Together, they form a lightweight but powerful ecosystem for Spark monitoring and troubleshooting.
1. sparkMeasure — Understand What Your Spark Job Is Really Doing
Project
sparkMeasure GitHub Repository and API documentation
If you use Spark interactively, tune jobs, or benchmark workloads, chances are you have wished for an easier way to collect performance metrics directly from your code.
That is exactly what sparkMeasure was built for.
sparkMeasure provides lightweight instrumentation for Apache Spark applications and exposes metrics directly inside Scala and PySpark workflows.
Why Users Like It
One major advantage of sparkMeasure is simplicity.
A few lines of code are enough to start collecting meaningful metrics.
Example Use Cases
- Compare two DataFrame/SQL optimization strategies
- Investigate shuffle-heavy workloads
- Measure the impact of partitioning changes
- Capture metrics during automated tests
- Export performance summaries to DataFrames
Adoption
sparkMeasure has seen strong adoption in the Spark community. The sparkMeasure's Python wrapper package alone currently (May 2026) exceeds 1 million downloads per month. This level of usage demonstrates how broadly useful lightweight Spark instrumentation has become.
Figure 1: Architecture diagram showing how sparkMeasure integrates with the Spark's executors task metrics system to collect, aggregate, and expose Spark execution metrics for analysis and troubleshooting.
2. SparkMonitor — Making Spark Friendlier in Notebooks
Project
sparkmonitor GitHub Repository
Interactive notebooks are one of the most popular ways to use Spark today.
But notebook users often struggle with:
- limited visibility into job progress,
- difficulty understanding Spark execution,
- and poor feedback during long-running computations.
This is where sparkmonitor helps.
SparkMonitor was originally developed for CERN’s hosted notebook environments to improve the Spark experience for users running Jupyter notebooks interactively.
It provides notebook-friendly monitoring and visualization capabilities that make Spark behavior easier to understand while jobs are running.
The goal is simple:
Make Spark execution more transparent and easier to follow directly from the notebook environment.
3. Spark Dashboard — Real-Time Observability for Spark Clusters
Project
Spark Dashboard GitHub Repository and notes on Spark Dashboard
Sometimes the Spark UI or aggregated Spark metrics are not enough to understand resource usage, saturation or performance bottlenecks.
Operations teams and platform administrators need real-time monitoring and historical metrics,
This is the goal of the Spark Dashboard project.
Why This Matters
Real-time dashboards help answer operational questions such as:
- Are executors under memory pressure or CPU bound or I/O bound?
- Is the cluster saturated?
- Did a deployment introduce regressions?
At CERN, this dashboard is also used internally as an optional enhanced monitoring solution for Spark services.
The goal of Spark Dashboard is to provide a ready-to-use real-time monitoring stack for Spark, packaged as Docker images and Helm charts, with integrations already configured for Telegraf, VictoriaMetrics, and Grafana dashboards.
This makes it easy to deploy end-to-end Spark observability, from a laptop to large Kubernetes clusters.
Test-Driving the Monitoring Tools with TPC-DS Benchmarks
A practical way to explore and validate these monitoring tools is to run them against reproducible Spark benchmark workloads such as TPC-DS.
We use an open-source PySpark wrapper for TPC-DS benchmark execution: TPCDS PySpark Wrapper
Figure 4: Snapshot from the Spark Dashboard captured during the execution of the TPC-DS benchmark at 10 TB scale, illustrating real-time cluster activity and Spark resource utilization.
Complementary Rather Than Competing
These tools are designed to work at different levels. Think of them as complementary building blocks.
Open Source and Community
All three projects are open source and publicly available on GitHub.
Repositories
Final Thoughts
Spark applications can sometimes feel like black boxes.
The more visibility users have into execution behavior, metrics, and resource consumption, the easier it becomes to:
- optimize workloads,
- troubleshoot issues,
- improve cluster efficiency,
- and teach others how Spark really works.
We hope these tools help make Spark more observable, understandable, and easier to operate, whether you are running a single notebook or a large production platform.
If you are already using them, we would love to hear about your use cases and feedback from the community.



