在Spark中使用externalShuffle服务清理文件

aelbi1ox  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(160)

我们使用Spark 3.0.1(独立模式),带有动态分配和外部shuffle服务。
在切换到专用持久磁盘后,我们开始出现“磁盘空间不足错误”,因此我们查看了/tmp文件夹,并注意到许多旧的应用程序shuffle文件仍然存在,这在某种程度上是可以理解的,因为shuffle文件应该保持可用,只要worker还活着。
但是在什么时候这些文件会被删除呢?我假设在作业完成后,shuffle文件不再需要并且可以(并且应该)被删除,但是查看spark代码库(ExternalShuffleBlockResolver),它显示目录清理器只有在以下情况下才会被触发:

  • applicationRemoved -删除整个执行器目录(包括shuffle文件)
  • executorRemoved -只删除非随机文件

我错过了什么?什么服务应该清理 Shuffle 文件的完成/失败的作业?
请注意,我们使用多租户架构,这意味着我们的spark应用程序充当多个请求的服务器。

xv8emn3q

xv8emn3q1#

这个特性是从spark 3.4.0开始实现的。升级你的spark集群来修复这个问题。在this pr中检查修复。

相关问题