【问题标题】:Does Spark write intermediate shuffle outputs to diskSpark 是否将中间 shuffle 输出写入磁盘
【发布时间】:2017-04-18 09:42:46
【问题描述】:

我正在阅读 Learning Spark,但我不明白 Spark 的 shuffle 输出写入磁盘意味着什么。请参阅第 8 章,调优和调试 Spark,第 148-149 页:

Spark 的内部调度程序可能会截断 RDD 图的沿袭 如果现有的 RDD 已经持久化在集群内存中或 磁盘。 这种截断可能发生的第二种情况是当一个 RDD 已经物化为早期洗牌的副作用,甚至 如果它没有明确地持久化。这是引擎盖下 利用 Spark shuffle 的事实进行优化 输出被写入磁盘,并利用了多次 部分 RDD 图被重新计算。

据我了解,有不同的持久化策略,例如默认的MEMORY_ONLY,这意味着中间结果永远不会被持久化到磁盘上。

shuffle 何时以及为什么会在磁盘上保留某些内容?进一步的计算如何重用它?

【问题讨论】:

标签: apache-spark rdd


【解决方案1】:

什么时候

当需要随机播放的操作第一次评估(操作)并且无法禁用时会发生这种情况

为什么

这是一种优化。洗牌是 Spark 中发生的昂贵事情之一。

如何通过进一步的计算重用它?

在同一个 RDD 上执行的任何后续操作都会自动重用它。

【讨论】:

  • Spark 是否每次都保留 shuffle 输出,或者它可能会跳过将 shuffle 结果写入磁盘?
  • 它重用了随机文件,所以它应该发生一次。
  • 抱歉,我的意思是如果 Spark 不会将 shuffle 输出写入磁盘?
  • 我会在每个随机播放阶段发生。这是该机制的强制性部分。并且不能跳过或禁用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 2021-08-18
相关资源
最近更新 更多