I'm running Spark 1.5.1 on Mesos in coarse-grained mode. No dynamic allocation or shuffle service. I see that there are two types of temporary files under /tmp folder associated with every executor: /tmp/spark-<UUID> and /tmp/blockmgr-<UUID>. When job is finished /tmp/spark-<UUID> is gone, but blockmgr directory is left with all gigabytes in it. In Spark 1.4.1 blockmgr-<UUID> folder was under /tmp/spark-<UUID>, so when /tmp/spark folder was removed blockmgr was gone too.