spark/performance
senior
Connecting…

Executor OOM

A skewed partition, MEMORY_ONLY cache, or oversized broadcast kills an executor JVM. The driver is usually still alive.

Lesson 29 of 29 · Spark path

Explain it at my level

  1. Tasks
  2. Fat heap
  3. Lost executor
  4. Retry
Watch the canvas:overheadstorage (cache)execution (shuffle / join)Live simulation

Executor JVM container (spark.executor.memory + overhead)

Off-heap overhead (JVM, NIO, ~10%)60%
Reserved (300MB fixed)100%
Storage — cached RDD / DataFrame partitions0%
Execution — shuffles, joins, aggregations, sorts0%

0 MBContainer cap: heap + overhead · Spark pool ≈ (heap − 300MB) × 0.6

Partition data + shuffle arriving:

Executor JVM started. Base regions allocated.

The driver stays up. This worker is the one a fat task fills.