小编iga*_*iga的帖子

即使有足够的 RAM,Spark 也会将 shuffle 输出定向到磁盘

我们有一个没有本地磁盘的 Spark 集群,并且已设置溢出到 NFS。我们意识到这不是 Spark 的设计用途,但这就是我们当前的现实。

在这个世界上,泄漏会大大减慢 Spark 工作的速度,我们希望将其最小化。对于我们拥有的大多数作业,Spark 执行器有足够的 RAM 来保存所有中间计算结果,但我们看到 Spark 总是将 shuffle 结果写入磁盘,即在特殊情况下写入 NFS。我们已经尝试过所有 Spark 配置选项,这些选项看起来与尝试让 Spark 将 shuffle 输出写入 RAM 没有任何效果。

我在一些地方看到 Spark 更喜欢将 shuffle 输出写入磁盘,例如Does Spark write middle shuffleoutputs to disk。我的问题是:

有没有办法让 Spark 在有可用 RAM 的情况下使用 RAM 进行随机输出?

如果不是,有什么方法可以让它使用更少的大写操作?我们看到它执行大量 1-5KB 的小写入,并在每次写入后等待 NFS 延迟。以下配置选项没有帮助:

spark.buffer.size
spark.shuffle.spill.batchSize
spark.shuffle.spill.diskWriteBufferSize
spark.shuffle.file.buffer
spark.shuffle.unsafe.file.output.buffer
spark.shuffle.sort.initialBufferSize
spark.io.compression.*.blockSize
Run Code Online (Sandbox Code Playgroud)

apache-spark

7
推荐指数
1
解决办法
271
查看次数

标签 统计

apache-spark ×1