• Spark shuffle失败的可能原因 及解决办法


    大数据Spark任务中,分区数过小,每个分区的数据量会很大,执行join、crossjoin的过程,有可能导致shuffle write失败的操作。 可能原因包括:

    •    executor.memory内存不足,导致相应比例的nio资源不足,
    •    executor.memoryOverhead不足,没有足够的nio资源,从而导致失败。

    其他的可能导致shuffle write失败或者节点访问异常的原因:   executor--cores数目过大,适当降低executor-cores,增加num-executors,不降低运行速度,但是每个executor的内存需求降低,shuffle write失败的问题可以避免。

    repartition后,增大分区数,减小每个分区的数据量,可以总体避免上述问题,但是如果设置分区过大,可能造成如下的问题:

    1) 频繁的创建task,并行的running数目一直在变化的,比如最大是可能task数700,执行完639个后,剩下61个task还在执行这一批,从而显示出还有61个running,频繁的创建任务消耗大量资源

    2)高并发执行完小的/均匀的分区后,最后剩余的部分分区,可能因为划分不均匀,反而只利用少量task资源,导致耗时超长。

     
  • 相关阅读:
    thinkphp empty标签
    thinkphp present标签
    if标签
    thinkphp 范围标签
    thinkphp 比较标签
    thinkphp switch标签
    thinkphp for标签
    thinkphp foreach标签
    QueryList 来做采集
    thinkphp volist标签
  • 原文地址:https://www.cnblogs.com/operaculus/p/15663025.html
Copyright © 2020-2023  润新知