Venkata krishnan Sowrirajan created SPARK-59138:
---------------------------------------------------

             Summary: Preserve reliably-stored shuffle map outputs on executor 
loss
                 Key: SPARK-59138
                 URL: https://issues.apache.org/jira/browse/SPARK-59138
             Project: Spark
          Issue Type: Improvement
          Components: Spark Core
    Affects Versions: 4.1.3
            Reporter: Venkata krishnan Sowrirajan


On executor loss, DAGScheduler unregisters all map outputs on the lost executor 
and forces the map stage to recompute. When a shuffle's output is reliably 
stored off-executor (e.g. a remote shuffle service such as Celeborn), the data 
survives the executor, so this recompute is wasteful.

Today reliability is expressed only through 
ShuffleDriverComponents.supportsReliableStorage(), a single application-wide 
flag. That cannot represent a mixed setup where one shuffle lives on the remote 
service while another falls back to local disk on the same executor (e.g. 
Celeborn AUTO fallback). As a result Spark either recomputes reliable shuffles 
unnecessarily, or would skip recompute for local-disk fallback shuffles whose 
output was genuinely lost.

Make reliability per-shuffle:
 - Add ShuffleHandle.isReliablyStored (default false), overridable by a 
ShuffleManager that routes a shuffle to reliable storage.
 - Store the bit per shuffle in MapOutputTracker and skip only reliably-stored 
shuffles when unregistering outputs on executor/worker loss. Genuine fetch 
failures continue to unregister everything.
 - Honor the per-shuffle bit in TaskSetManager's re-run gate.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to