You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataProc集群中Spark无磁盘耗尽异常:谁清理Shuffle数据?

谁在清理你的Spark Shuffle数据?

当你启用**External Shuffle Service(ESS)**后,集群各节点上的ESS进程是负责Shuffle数据清理的核心角色,而非Executor或Driver进程,具体逻辑如下:

  • Executor的角色变化:启用ESS后,Executor仅负责生成Shuffle文件,并将文件的元数据注册到本地的ESS进程,之后Executor不再拥有Shuffle文件的管理权,也不会主动清理这些文件——哪怕Executor重启,ESS也会保留仍被需要的Shuffle文件。
  • ESS的清理机制:
    1. DataProc默认开启ESS的自动清理功能(对应配置spark.shuffle.service.cleanup.enabled=true),ESS会定期扫描本地磁盘上的Shuffle文件。
    2. 它会清理两类文件:一是已经完成的Stage对应的、不再被任何后续任务引用的Shuffle数据;二是超过配置的最大保留时长(spark.shuffle.service.cleanup.max.age,默认1小时)的文件。
    3. 这种定期清理机制保证了即使你的应用持续生成Shuffle数据,磁盘空间也不会被持续耗尽——你在Spark UI看到的“聚合Shuffle数据”是历史累计值,而非当前磁盘实际占用的实时值。
  • Driver的角色:Driver仅负责任务的调度和Stage的生命周期管理,不会直接参与节点本地Shuffle文件的清理工作。

这就是为什么你的集群磁盘没有被Shuffle数据占满,任务能正常运行的原因。

内容的提问来源于stack exchange,提问作者user3103957

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:08:20