【问题标题】:Spark partitions taking uneven time to execute with frequent executor lost failureSpark 分区执行时间不均且执行器频繁丢失故障
【发布时间】:2016-01-18 13:01:07
【问题描述】:

我的 Spark 应用程序分几个阶段处理输入 CSV 文件。在每个阶段,创建的 RDD 都很大(以 MB 到 GB 为单位)。我创建了不同数量的分区并尝试过,但分区总是不均匀地完成阶段。一些分区很快就完成了一个阶段,但最后几个分区总是花费大量时间并不断抛出 heartbeat timeoutexecutor lost failures 并不断重试。

我尝试将分区数更改为不同的值,但最后几个分区始终无法完成。我也尝试了很久也无法解决这个问题。

我该如何处理?

【问题讨论】:

  • 您能否包含导致此问题的代码?您是在 YARN、Mesos 上运行还是在独立模式下运行?
  • @GlennieHellesSindholt 显示的输出在 YARN 上。独立也会导致内存问题,从而导致执行程序失败。代码在pastebin.com/D7VAVW8U

标签: scala apache-spark


【解决方案1】:

问题的根源很可能是这部分:

aggregateByKey(Vector.empty[(Long, Int)])(_ :+ _, _ ++ _)

基本上,您正在做的是groupByKey 的效率显着降低的版本。如果key的分布有偏差,那么聚合后的分布就会有偏差,导致不同机器上的负载不均。

此外,如果单个键的数据不适合主内存,则整个进程将失败,原因与groupByKey 相同。

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2020-09-19
    相关资源
    最近更新 更多