Skip to main content
schedule · aws

EMR clusters sitting idle between jobs

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

EMR reports an IsIdle metric directly, and ZopNight uses it alongside AppsRunning over 30 days. This is categorised as a scheduling finding rather than deletion: EMR clusters are usually idle between batch runs, and the fix is a schedule or auto-termination, not removal.

Signal and threshold

How ZopNight evaluates EMR clusters sitting idle between jobs.
Field Value
Rule IDsRC-051
Categoryschedule
Severitymedium
Metricnone — pure configuration read
Sourceemr_idle.go

AWS tells you this one directly

EMR emits an IsIdle metric: a cluster reporting no active applications and no work in progress. Combined with AppsRunning, the signal needs no inference: EMR itself is stating whether the cluster is doing anything.

That makes this one of the more reliable idle findings in the catalogue, and it is why the threshold logic is simpler than for compute resources where idleness has to be inferred from utilisation.

Why it is a schedule finding, not an idle one

The rule’s category is schedule, deliberately. An EMR cluster idle between batch runs is working as designed. The question is whether it needed to exist during the gap, not whether it should exist at all.

That distinction changes the remediation completely. Deleting the cluster is usually wrong; turning off the hours it spends waiting is usually right.

Auto-termination is the first thing to check

EMR supports an auto-termination policy that shuts a cluster down after a configurable idle period. A cluster without one, running a job that finishes in two hours, keeps billing per instance-hour until somebody notices, which on a large instance fleet is expensive fast.

For clusters running scheduled batch work, a start/stop schedule aligned to the job window is the alternative. For genuinely intermittent work, EMR Serverless removes the question entirely by billing only for job execution.

Reading the IsIdle metric hour by hour

Terminal window
aws cloudwatch get-metric-statistics \
--namespace AWS/ElasticMapReduce --metric-name IsIdle \
--dimensions Name=JobFlowId,Value=j-0123456789ABC \
--start-time "$(date -u -v-7d +%Y-%m-%dT%H:%M:%SZ)" \
--end-time "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--period 3600 --statistics Maximum

An hourly period shows the shape of the idle windows, which is what you need to size a schedule.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·