Spark面试题:GC导致的 Shuffle文件拉取失败,报错 Shuffle file not found

Posted 宝哥大数据[离职找工作中,大佬帮内推下]

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark面试题:GC导致的 Shuffle文件拉取失败,报错 Shuffle file not found相关的知识,希望对你有一定的参考价值。

​ 在Spark作业中,有时会出现shuffle file not found的错误,这是非常常见的一个报错,有时出现这种错误以后,选择重新执行一遍,就不再报出这种错误。

​ 出现上述问题可能的原因是Shuffle操作中,后面 Stage 的 Task 想要去上一个 Stage 的 Task 所在的Executor 拉取数据,结果对方正在执行GC执行GC会导致Executor内所有的工作现场全部停止,比如BlockManager、基于netty的网络通信等,这就会导致后面的task拉取数据拉取了半天都没有拉取到,就会报出shuffle file not found的错误,而第二次再次执行就不会再出现这种错误。

​ 可以通过调整reduce端拉取数据重试次数和reduce端拉取数据时间间隔这两个参数来对 Shuffle 性能进行调整,增大参数值,使得reduce端拉取数据的重试次数增加,并且每次失败后等待的时间间隔加长。

val conf = new SparkConf()
  .set("spark.shuffle.io.maxRetries", "6")
  .set("spark.shuffle.io.retryWait", "60s")

以上是关于Spark面试题:GC导致的 Shuffle文件拉取失败,报错 Shuffle file not found的主要内容,如果未能解决你的问题,请参考以下文章

Spark面试题:GC导致的 Shuffle文件拉取失败,报错 Shuffle file not found

大数据面试题系列一

大数据之Spark:故障排除

spark和mapreduce的shuffle

Spark面试题——Spark资源调优

[spark] shuffle